2011-12-13 65 views
-1

我在我的主類中有三個線程,如果這些線程正在併發運行,我怎樣才能在迭代中隨機地發生每個線程?例如,我有:在Java中選擇隨機線程

線程1

線程2

線程3

,並在第一次迭代中它可能看起來像:線程2,線程1,線程3和在第二個可能有不同的組合。

另外,在這種情況下,我的每個線程都有不同的結果,分配枚舉。另外,每次執行這三個線程時都會有其他三個線程比較這些線程的結果,並根據該結果執行其他執行。然後該過程再次開始。

+3

你能澄清你的意思嗎?「隨機迭代中每個線程的出現?」 – templatetypedef 2011-12-13 23:14:58

回答

0

如果您有辦法通知他們,您可以將它們存儲在數組或列表中,然後選取一個隨機數字來決定您想要的數字。

或者,您可以讓每個線程sleep()的隨機時間長度。這應該會產生足夠的隨機性,但可能不會依賴生產代碼,因爲您無法保證它們會一直醒來。 (這是99.999999999%可能,他們會的,但小部分彈出的方式比它應該更多,始終當你不掉。)

注意,這最後一個可能最終是這樣的:

線程1

線程2

線程1

線程3

線程2

0

如果您的任務不在同步方法或程序塊中,那麼這些任務將同時發生。除了強制一個線程等待另一個線程完成之外,絕對沒有辦法控制任務的完成順序,這是非常低效的。

如果您的任務位於同步方法或塊中,那麼沒有理由首先執行多線程,因爲同步塊一次只能由一個線程執行。