繁体   English   中英

使用Runnable VS的单个实例创建多个线程。 每个线程都有单独的实例

[英]Creating multiple threads with a single instance of Runnable VS. with separate instances for each thread

为所有这些线程创建多个线程与Runnable的一个实例并为每个线程创建单独的实例有什么区别。 什么时候应该使用第一种方法,何时使用第二种方法? 你能给我一个例子,这样我可以更清楚地理解这两个概念吗? 我发现很少有类似的话题,但我无法完全理解这两种方法之间的对比。

如果每个线程完全相同,则只能在多个线程中使用相同的Runnable。 这很少有用。 你可以让线程池中的线程以这种方式工作,但在这种情况下,我会使用内置的线程池,而不是编写自己的线程池。

如果您需要不同的线程以具有不同的状态,则每个线程都需要不同的Runnable,因为Runnable保持状态。 当您拥有需要处理不同数据的线程时,即使代码可能相同,这也很有用。

有什么不同...?

差异--- 整个差异---是如果Runnable类有一个或多个字段 ,那么如果所有线程都被赋予相同的实例,那么这些字段将被多个线程共享,并且它们将不被共享如果每个线程都有自己的实例。

如果Runnable类没有声明任何字段,那么实际上没有任何区别。

基本上,由您来决定程序中哪些数据应该在线程之间共享以及哪些数据不应该共享。

如果所有Runnable字段都是共享的(即,如果您为每个线程使用相同的Runnable实例),那么这将使您更难获得任何共享的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM