JavaDoc for Runnable 状态(已添加强调)
Runnable 接口应该由任何其类实现
实例旨在由线程执行。
该类必须定义一个名为 run 的无参数方法。
该接口旨在为希望在活动时执行代码的对象提供通用协议。例如,Runnable是由Thread类实现的。处于活动状态仅仅意味着线程已经启动并且尚未停止。
此外,Runnable 提供了使类处于活动状态而不需要子类化 Thread 的方法。实现 Runnable 的类可以通过实例化 Thread 实例并将其自身作为目标传递来运行,而无需子类化 Thread。在大多数情况下,如果您只计划重写 run() 方法而不重写其他 Thread 方法,则应使用 Runnable 接口。这很重要,因为除非程序员打算修改或增强类的基本行为,否则不应对类进行子类化。
有几个人(包括构建我正在使用的代码分析工具的人)从该声明中推断出这样一个前提:Runnable 只能用于旨在由单独线程执行的类。总的来说,我认为这就是 Runnable 接口的意图,并且我喜欢按照作者的意图使用代码。
我想要一个在当前线程上执行一些工作的类的通用接口。我更愿意使用行业标准(如果存在)。我不需要如何编写自己的界面的示例 - 我只是想知道是否已经存在。
所有正在运行的代码都是由线程执行的!无论是新线程还是当前线程,它仍然是一个线程。就是这样Callable描述它:
Callable 接口与 Runnable 类似,两者都是为实例为潜在地由另一个线程执行。
Runnable 的要点是您不必关心线程结构,只需传递一段可执行代码即可。
这可能是:
- 在特定线程上,如SwingUtilities.invokeAndWait.
- 在任意新线程上,如Executors.newSingleThreadScheduledExecutor.
- 在线程池上,就像Executors.newCachedThreadPool
在我们的多核世界中,这应该不重要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)