Java執行緒通訊

2021-09-24 04:39:17 字數 853 閱讀 9766

假設現在系統中有兩個執行緒,分別代表取錢和存錢,現在假設系統有一種特殊的要求,系統要求存款者和取款者不斷重複訪問款,而且要求每當存款者將錢存入指定賬戶時,取錢者就立即取出該筆錢,不允許連續存款兩次,也不允許連續取款兩次

public class threadconnection 

}class account1

//取錢

public synchronized void draw(int drawmoney) catch (interruptedexception e)

}else

}//存錢

public synchronized void deposit(int depositmoney) catch (interruptedexception e)

}else

}}class drawthread extends thread

@override

public void run()

}}class depositthread extends thread

@override

public void run() }}

執行結果:

由執行結果可知,兩個存錢者隨機向賬戶存入錢,三個取錢者隨機取走賬戶中的錢,只有當取錢者取錢後,存錢者才能存錢,只有當存錢者存錢後,取錢者才能取錢。

程式最後被阻塞不能繼續執行,只是由於兩個存錢者有200次存錢操作,而三個取錢者有300次取錢操作,取錢操作一直在等待存錢,所以程式最後被阻塞。(此處不是死鎖)

java執行緒通訊

題目 子執行緒迴圈10次,接著主線程迴圈100,接著又回到子執行緒迴圈10次,接著再回到主線程又迴圈100,如此迴圈50次。public class traditionalthreadcommunicationtest start for int i 1 i 50 i static class bu...

Java 執行緒通訊

sychronized關鍵字 對方法使用該關鍵字,可以保證每次只有乙個執行緒獲取monitor的許可權,從而確保執行緒對共享資源操作的不會出現異常 wait wait 方法屬於object,有三個過載方法,該方法必須在sychronized方法或同步 塊中呼叫,呼叫該方法的執行緒會進入wait 對應...

java 執行緒 執行緒的通訊

執行緒通訊的三種方式 同步 while 輪詢方式 wait notify 方式 這裡講的同步是synchronized 關鍵字來實現執行緒間的通訊,我們用 來示範一下。class obj public synchronized void del public class demo4 start 執行...