Java多執行緒(四) 協調同步執行緒

2021-08-01 10:16:33 字數 1268 閱讀 5723

當乙個執行緒使用的同步方法中用到的某個變數,而此變數又需要其他執行緒修改才能符合本執行緒的需要,那麼可以再同步方法中使用wait()方法。

使用wait()方法時正確的模板是將鎖放置在while()迴圈中。

package test;

public

class

tickethome

implements

runnable

else

if (thread.currentthread().getname().equals("mr.s"))

}public

synchronized

void

saleticket(int money)

else

if (money == 20) catch (exception e) {}

}five_rmb = five_rmb - 3;

twenty_rmb = twenty_rmb + 1;

system.out.println("給"+thread.currentthread().getname()+"入場券,找回15元");

}notifyall

/*notify方法與notifyall方法在數量上不同之外還有什麼不同的區別??

notifyall使所有原來在該物件上等待被notify的執行緒統統退出wait的狀態,變成等待該物件上的鎖,一旦該物件被解鎖,他們就會去競爭。

notify他只是選擇乙個wait狀態執行緒進行通知, 並使它獲得該物件上的鎖,但不驚動其他同樣在等待被該物件notify的執行緒們,當第乙個執行緒執行完畢以後釋放物件上的鎖。

此時如果該物件沒有再次使用notify語句,即便該物件已經空閒,其他wait狀態等待的執行緒由於沒有得到該物件的通知,繼續處在wait狀態,直到這個物件發出乙個notify或notifyall,它們等待的是被notify或notifyall,而不是鎖。 */}

}

注釋引用自 [淡然如水的專欄]

守護執行緒的意思是指當程式中的所有使用者執行緒都已結束執行時,即使守護執行緒中的run()方法中還需要執行的語句,守護執行緒也立刻結束執行。我們可以使用守護進行進行一些不是很重要的工作。比方說:

thread.sleep(1000)

執行緒必須在執行之前設定自己是否是守護執行緒。

thread.setdaemon(true);

JAVA多執行緒同步

1.同步 塊 synchronized 物件 例程 package cn.wf.thread1 多執行緒同步 同步 塊 author wf public class thread test class thread01 implements runnable trycatch interrupted...

java多執行緒 同步

2019獨角獸企業重金招聘python工程師標準 synchronized關鍵字鎖的物件可以是方法 變數 類和當前例項。synchronized不能被繼承,子類將自動去除synchronized關鍵字 public synchronized void 變為public void 方法public s...

多執行緒學習 執行緒同步 四

問題 子執行緒迴圈10次,回到主線程執行100次,接著又回到子執行緒執行10次,再回到主線程執行100次,如此迴圈50次,該如何實現?public class threadcommunicationstudy start for int i 1 i 50 i 資源類 class bussiness ...