我有以下代碼,只有當它至少有2個元素時,才從隊列中檢索第一個元素。出於某種原因,它不是輪詢第一個元素。但是,如果我在其中添加打印語句,它將打印並輪詢。該方法在一個線程中,並且還有另一個線程將元素添加到隊列中,此線程將從隊列中讀取。隊列不能使用線程?
...
public void run(){
while(beginning){
int size = queue.size();
// adding this will cause the program to enter if below: System.out.println(size);
if(size > 1){
System.out.println("data: " + queue.poll());
beginning = false;
}
}
}
...
如果添加的println語句,將打印
....
數據:數據
如果println語句,是刪除,也不會打印什麼。
其實,只要我把東西在裏面,一個Thread.sleep代碼(1)或隨機打印語句,它會查詢出的數據並打印
thanx的任何輸入。
[Loop沒有看到沒有打印語句的更改值]的可能重複(http://stackoverflow.com/questions/25425130/loop-doesnt-see-changed-value-without-a-print-statement) – Boann 2014-08-25 15:52:10