執行緒間通訊

2021-07-24 16:34:14 字數 1170 閱讀 5539

執行緒間通訊,把乙個資料儲存空間劃分為兩個部分:一部分用於儲存人的姓名,另一部分用於儲存人的性別。這裡包含的執行緒有兩個:乙個執行緒向資料儲存空間新增資料(生產者),另乙個執行緒從資料儲存空間中取出資料(消費者),這種程式需要有兩種意外考慮:1、假設生產者執行緒剛向資料儲存空間中新增乙個人姓名,還沒有加入這個人的性別,cpu就切換到消費者執行緒,消費者則把這個人的姓名和上乙個人的性別聯絡了一起,2、生產者放入若干次資料,消費者才開始取資料,或者,消費者取完乙個資料後,還沒有等生產者放入新的資料,又重複取出已經取出過的資料
以上兩個考慮都沒有考慮到資料的同步問題,資源不同步會導致資料訪問之間的錯誤,下面的**是解決問題的小例子,參考

package com.liangbo;

public class threadcommunation

}//宣告乙個p類

class p

catch(interruptedexception e)

}this.name = name;

trycatch(exception e)

this.*** = ***;

bfull = true;

notify();

} //get方法,並實現類了的封裝

public synchronized void get()

catch(interruptedexception e)

}system.out.println(name+"---->"+***);

"---->"+this.***);

bfull = false;

notify(); }

}//宣告乙個含有runnable多執行緒的類producer(生產)

class producer implements runnable

//宣告乙個公共方法run

public void run()

else

i= (i+1)%2;

} }}//宣告乙個產出類,實現多執行緒介面

class consumer implements runnable

public void run() }

}

執行緒間通訊

執行緒間通訊 多個執行緒在操作統一資源,但各個執行緒操作的動作不同。資源 class res class input implements runnable public void run else x x 1 2 class output implements runnable public vo...

執行緒間通訊

執行緒間的通訊 在乙個多執行緒的應用程式中,所有執行緒共享程序資源,協同工作。所以,執行緒之間的通訊是編寫多執行緒 應用的必不可少的環節。執行緒之間的通訊包括互斥 同步等,它是多 執行緒設計中最難控制的部分,也是關鍵部分。執行緒間的互斥 1 臨界區 在乙個多執行緒 的應用程式中,可能存在這樣的危險 ...

執行緒間通訊

執行緒間通訊 其實就是多個執行緒在操作同乙個資源 但是操作的動作不同。等待喚醒機制 wait notify 0 notifyall 都使用在同步中,因為要對持有監視器 鎖 的執行緒操作。所以要使用在同步中,因為只有同步才具有鎖 為什麼這些操作執行緒的方法要定義object類中呢?因為這些方法在操作同...