簡體   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