SwingUtilities.invokeLater(new Runnable())如何真正起作用?

时间:2014-10-27 12:12:50

标签: java multithreading

据我所知,使用方法SwingUtilies.invokeLater(new Runnable())迫使EDT执行Runnable - 对象中定义的作业,但是人们可以想象这个?通常run() - 对象中的Runnable方法用于在新线程中执行Java内容,但不是在这里,因为这里Runnable - 对象仅调用EDT?

1 个答案:

答案 0 :(得分:3)

Runnable只是一个单一方法run()的接口。有权访问Runnable对象的任何人都可以调用此方法。线程执行此操作。 EDT这样做。执行人员这样做。你的程序可以这样做。这只是一个惯例。其他软件可以使用不同的约定,例如,ExecutorService可以调用Callable对象。

在内部,EDT有自己的run方法,它在循环中从队列中提取Runnable对象并调用它们的run()方法。