我一直在一個有兩個線程的小項目。 一個生成內容並將其放入隊列(在靜態上下文中)。 另一個線程運行並等待隊列中的內容執行某些操作。雖然循環線程似乎沒有運行
的問題:
雖然第二個線程在等待的東西放置在隊列中,它似乎沒有運行,我會盡量表現出這一點。
我只是好奇是這裏發生了什麼。
_slices
是一個隊列:Queue<E> _slices = new LinkedList<E>();
線程2 run()
:
while (true) {
if (!Main._slices.isEmpty()) {
System.out.println("Something in the Queue!");
} else if (Main.doneQueuing) {
break;
}
}
此代碼以上不會一旦元件被添加到隊列中做任何事情。現在
,此代碼的工作:
while (true) {
System.out.println("As long as a process is done here it works");
if (!Main._slices.isEmpty()) {
System.out.println("Something in the Queue!");
} else if (Main.doneQueuing) {
break;
}
}
這意味着隊列沒有被填充。檢查填充隊列的代碼,並確保兩個隊列引用都指向同一個隊列實例。 –
'_slices'的類型是什麼? – nosid
@AniketThakur隊列與此無關,正如我上面所說的,有一個案例可行。 – MichaelMitchell