Java 是否应该在EDT内声明密钥绑定?

Java 是否应该在EDT内声明密钥绑定?,java,swing,thread-safety,event-dispatch-thread,Java,Swing,Thread Safety,Event Dispatch Thread,我找不到关于Java密钥绑定和线程安全的太多信息 我有这样一段代码: getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke( KeyEvent.VK_LEFT, 0), "leftArrowKey"); getActionMap().put("leftArrowKey", new LeftArrowListener()); get

我找不到关于Java密钥绑定和线程安全的太多信息

我有这样一段代码:

        getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(
            KeyEvent.VK_LEFT, 0), "leftArrowKey");
        getActionMap().put("leftArrowKey", new LeftArrowListener());

        getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(
            KeyEvent.VK_RIGHT, 0), "rightArrowKey");
        getActionMap().put("rightArrowKey", new RightArrowListener());
该代码是否应始终保存在EDT中


或者把它放在一个单独的线程上可以吗?

Swing的某些部分是线程敌对的。没有定义哪些部分。因此,只需在EDT上执行所有Swing操作。

Swing的某些部分是线程敌对的。没有定义哪些部分。因此,只需在EDT上执行所有Swing操作。

我想如果我想确保线程安全,最好将该代码保留在EDT中,但如果我将该代码保留在不同的线程中,它仍然是线程安全的吗?任何Swing或AWT方法,其契约没有明确说明从任何线程调用都是安全的,应假定需要EDT。并且没有这样的规定,所以总是在EDT中调用它们。我想如果我想确保线程安全,最好将代码保留在EDT中,但是如果我将代码保留在不同的线程中,它仍然是线程安全的吗?任何Swing或AWT方法,其合同没有明确说明从任何线程调用是安全的,应假定需要EDT。并且没有这样的规定,所以总是在EDT中给他们打电话。