2012-06-06 187 views
1

我有一個場景,我必須註冊多個用戶,並且與線程並行運行爲註冊用戶的數量,並由所有用戶並行執行相同的一組操作。爲此,我有一個jmx只有一次應該發生的動作(在一個線程數的設置線程中)以及另一個線程組運行,這個線程組是以5個線程運行的,這是之前註冊的用戶的數量,我執行一些操作這些用戶。 現在我想用5個線程並行執行這個整個場景。如何在另一個線程組中執行線程組?

我該怎麼做?

我使用了include控制器,但線程組未按預期執行,對於包含的jmx中的5個線程組中發生的操作,我沒有獲得25次迭代。

回答

0

我不確定你在做什麼,我對jmx知之甚少,但這裏有一些想法。一個(或兩個)可能是相關的。

第一個是你的線程可能正在共享一個實例字段。例如,如果他們有一個共同的櫃檯,你會做5次而不是25次。確保您的公共變量(實例和類字段)已正確同步。儘可能使用局部變量。你必須當它們的值適用於時各使用線程而不是所有線程。

其次,您可能會在所有線程完成工作之前顯示結果或停止程序的事件。這在單核機器上是最糟糕的,但是線程可以並且可以按照任何可以想象的順序運行,並且在幾個不是的命令中運行。他們可以一次運行一個,最後一個開始運行。一個人可以在中間停下來,讓所有其他人跑完,然後重新開始。一堆可以同時運行(在不同的內核上或快速交換),而其他內容則什麼也不做。

我建議把一堆日誌記錄/輸出語句(System.out.println足夠好),併爲自己看看發生了什麼。它會花費你一段時間來理解你的輸出,但是一旦你這樣做了,你就可以開始把事情控制住了。

相關問題