Java swingutiles.invokeLater(new Runnable())是如何工作的?

Java swingutiles.invokeLater(new Runnable())是如何工作的?,java,multithreading,Java,Multithreading,据我所知,swingutiles.invokeLater(new Runnable())方法用于强制EDT执行Runnable-对象中定义的作业,但是人们怎么能想象得到呢?通常情况下,Runnable-对象中的run()方法用于在新线程中执行Java内容,但在这里不是,因为这里Runnable-对象仅调用EDT?Runnable只是一个带有单个方法run()的接口。任何有权访问可运行对象的人都可以调用此方法。线程可以做到这一点。EDT就是这样做的。遗嘱执行人这样做。您的程序可以这样做。这只是一个

据我所知,
swingutiles.invokeLater(new Runnable())
方法用于强制EDT执行
Runnable
-对象中定义的作业,但是人们怎么能想象得到呢?通常情况下,
Runnable
-对象中的
run()
方法用于在新线程中执行Java内容,但在这里不是,因为这里
Runnable
-对象仅调用EDT?

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


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

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


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

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


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

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


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

Runnable实例没有什么神奇之处。它们只是将来要运行的代码片段
SU.invokeLater
只是将runnable本身添加到事件队列(在事件包装器中)。在某个时刻,它到达队列的头部,EDT的处理循环将其移除以进行处理。要处理这样的事件,EDT运行runnable。@Gene:您应该将其作为answet添加,以获得credidts:-)。
runnable
实例没有什么神奇之处。它们只是将来要运行的代码片段
SU.invokeLater
只是将runnable本身添加到事件队列(在事件包装器中)。在某个时刻,它到达队列的头部,EDT的处理循环将其移除以进行处理。要处理这样的事件,EDT运行runnable。@Gene:您应该将其作为answet添加,以获得credidts:-)。
runnable
实例没有什么神奇之处。它们只是将来要运行的代码片段
SU.invokeLater
只是将runnable本身添加到事件队列(在事件包装器中)。在某个时刻,它到达队列的头部,EDT的处理循环将其移除以进行处理。要处理这样的事件,EDT运行runnable。@Gene:您应该将其作为answet添加,以获得credidts:-)。
runnable
实例没有什么神奇之处。它们只是将来要运行的代码片段
SU.invokeLater
只是将runnable本身添加到事件队列(在事件包装器中)。在某个时刻,它到达队列的头部,EDT的处理循环将其移除以进行处理。若要处理此类事件,EDT将运行runnable命令。@Gene:您应该将其作为answet添加,以获取credidts:-)。