- Нет.
- Нет.
- Фоновая нить.
Если код, работающий вне EDT, вызывает метод, определенный в классе GUI, токод будет выполняться не в EDT, а в вызывающем потоке.
Если код, выполняемый в EDT, вызывает код, определенный в классе без графического интерфейса, этот код будет выполняться в EDT.
Правило состоит в том, что если вы не создаете другой поток, вызываемый вами метод будет выполняться в потоке, из которого выполняется вызывающий код - потоки не соответствуют тому, в каких классах определены методы.
Методы, которые будут работать в EDT, это прослушиватели событий , когда они вызываются Swing, а не вами.(Они все еще могут быть, если вы вызываете их из EDT.)
Кроме того, любой код внутри Runnable.run()
метода передается в SwingUtilities.invokeLater()
и invokeAndWait()
также выполняется в EDT.
Любые обычные методы, которые вы вызываете из EDT, будут выполняться в EDT.
Любой код, вызываемый из Thread
, который вы создаете (будь то с помощьюнапрямую, или ExecutorService
, или SwingWorker.doInBackground()
) - это , а не в EDT.В вашей программе main()
метод также не на EDT.