JAVA 併發程式設計 多個執行緒之間共享資料(六)

2021-09-07 13:46:05 字數 1396 閱讀 8601

1。假設每乙個執行緒執行的**同樣。能夠使用同乙個

runnable

物件,這個

runnable

物件中有那個共享資料,比如,賣票系統就能夠這麼做。

2,假設每乙個執行緒執行的**不同。這時候須要用不同的

runnable

物件,比如,設計4個執行緒。

當中兩個執行緒每次對j新增1。另外兩個執行緒對j每次減1。銀行訪問款

有兩種方法來解決此類問題:

將共享資料封裝成另外乙個物件,然後將這個物件逐一傳遞給各個runnable物件。每乙個執行緒對共享資料的操作方法也分配到那個物件身上完畢,這樣easy實現針對資料進行各個操作的相互排斥和通訊

將runnable物件作為乙個類的內部類,共享資料作為這個類的成員變數,每乙個執行緒對共享資料的操作方法也封裝在外部類,以便實現對資料的各個操作的同步和相互排斥。作為內部類的各個runnable物件呼叫外部類的這些方法。

以下逐一介紹

賣票系統

demo

package com.tgb.hjy;

/** * 多執行緒共享資料-賣票系統

當中兩個執行緒每次對j新增1,另外兩個執行緒對j每次減1

//注意這個地方必須用while迴圈。由於即便再存入錢也有可能比取的要少

while(this.money

事實上多執行緒間的共享資料最基本的還是相互排斥,多個執行緒共享乙個變數,針對變數的操作實現原子性就可以。

併發程式設計 執行緒之間通訊

是同乙個鎖的資源。wait釋放鎖,notify不釋放鎖 public void runbase catch interruptedexception e start new thread start public void run02 catch interruptedexception e fin...

併發程式設計 多執行緒之間通訊

多執行緒之間實現通訊 多執行緒之間如何實現通訊 什麼是多執行緒之間通訊?多執行緒之間通訊,其實就是多個執行緒在操作同乙個資源,但是操作的動作不同。畫圖演示 多執行緒之間通訊需求 需求 第乙個執行緒寫入 input 使用者,另乙個執行緒取讀取 out 使用者.實現讀乙個,寫乙個操作。實現基本實現 共享...

java併發程式設計(二)多個執行緒多個鎖

多個執行緒多個鎖 多個執行緒多個鎖 多個執行緒,每個執行緒都可以拿到自己制定的鎖,分別獲得鎖之後,執行synchronized方法體的內容。就是在上次那個部落格上說道的鎖競爭的問題,是因為所有的執行緒過來以後都爭搶同乙個鎖。如果說每個執行緒都可以或得到自己的鎖,這樣的話我們的鎖競爭問題就沒有了,如果...