我們有2個線程在Java中:線程在Java中與while循環
主題1:
…
public void run()
{
while (Share.COUNTER<8)
Share.COUNTER++;
}
…
線程2:
…
public void run()
{
while (Share.COUNTER>-7)
Share.COUNTER--;
}
…
的問題是:哪個線程將是最初由while循環終止? 第二個問題是: 是否有保證線程將終止運行方法? 你能幫我回答這個問題嗎?因爲Java中的線程對我而言是新的。
如果'Share.COUNTER'沒有同步,那麼行爲是不確定的。 –
首先,您可能會獲得併發訪問修改,因爲您可能同時訪問同一個屬性。要回答你的問題,你不能保證哪一個會先完成。如果你要運行它,有時線程1將是第一個,其他線程2將是第一個。這是一個機會遊戲 – Draken
這取決於哪個線程將被系統所青睞。哪個線程將首先終止是不可預知的,並且不保證其中一個線程將結束(並因此結束另一個線程)。 – Massimo