java學習回顧---生產者與消費者問題以及多執行緒補充
生產者和消費者問題
Lock與unlock用於取代同步。在使用的時候需要創立物件,unlock往往放在finally裡面。
Await()與signal()和signalAll用於取代wait()和notify()與notifyAll(),使用的時候同樣需要創立物件。Await()往往放在try裡面。
區別在於一個lock裡面可以有多個conditional(用於操控await等)從而對不同功能執行緒進行等待和喚醒操作,避免了同步塊裡不能指定喚醒執行緒的弊端。
使用示例:
消費者與生產者類似,只是把try內改為res.out();
讓執行緒結束或從wait(),sleep()中恢復執行的方法:
使用方法:x.interrupt(x是想要恢復執行的執行緒),若想要讓執行緒結束,則在catch語句裡放入改變標記的語句(wait常放在try裡面,interrupt打斷wait後程式會進入catch裡),從而使標記改變,迴圈結束,run()執行結束則執行緒結束。
守護執行緒
守護執行緒(使用者執行緒)即後臺的執行緒,依託於前臺執行緒存在。當一個程式中只有守護執行緒的時候,虛擬機器就自動關閉。如果想把一個執行緒設定為守護執行緒,必須要在啟動執行緒之前設定。使用方法:x.setDaemon(true),x為希望設定的執行緒名稱。當一個程式執行緒全是迴圈的執行緒且需求迴圈次數一樣,可以把這些執行緒全都設定為守護執行緒,然後主執行緒決定迴圈次數,當主執行緒執行完迴圈次數之後,主執行緒自己關閉,此時程式裡剩下的執行緒全都是守護執行緒,然後程式就會關閉。
join()
Join()作用是使主執行緒等待某執行緒結束之後才能繼續執行。如:x.join()可以使執行此程式碼的執行緒凍結直到x執行緒結束之後主執行緒才會執行。Join()對其他建立的執行緒無效。
比如x1.start();
X2.start();x1.join();
執行這三行程式碼之後,會有三個執行緒,即主執行緒,x1,x2。主執行緒會凍結,此時虛擬機器只會執行x1和x2兩個執行緒,直到x1執行緒結束之後,主執行緒恢復執行,如果此時在x1結束之前x2就已經結束了的話,那此時執行的執行緒只有主執行緒。如果在x1結束時x2還沒結束,那此時執行的執行緒有主執行緒和x2。
Join():當A執行緒執行到了B執行緒的join()方法時,等B執行緒全部執行完,A才會執行。
Join()可以用來臨時加入執行緒執行。
執行緒的優先順序
執行緒的執行優先順序有1-10,10為最高,預設優先順序為5.可以通過setPriority來調。如:
t1.setPriority(10),作用是把t1執行緒的優先順序調到最高。(低優先順序的執行緒同樣會執行到,只是執行到的次數變少)
Yield
Yield可以暫停當前正在執行的執行緒,並執行其他執行緒。可以用來使兩個執行緒交替執行。用法:Thread.yield();
相關文章
- Java 多執行緒學習(執行緒通訊——消費者和生產者)Java執行緒
- Java多執行緒——生產者消費者示例Java執行緒
- JAVA執行緒消費者與生產者模型Java執行緒模型
- python中多執行緒消費者生產者問題Python執行緒
- 多執行緒-生產者消費者問題程式碼1執行緒
- Java 多執行緒基礎(十二)生產者與消費者Java執行緒
- Java多執行緒——消費者與生產者的關係Java執行緒
- Java多執行緒——生產者和消費者模式Java執行緒模式
- Java多執行緒14:生產者/消費者模型Java執行緒模型
- 多執行緒之生產者消費者執行緒
- C#多執行緒學習(三) 生產者和消費者C#執行緒
- C# 多執行緒學習(3) :生產者和消費者C#執行緒
- java多執行緒:執行緒間通訊——生產者消費者模型Java執行緒模型
- 關於Java多執行緒實現生產者和消費者的問題Java執行緒
- Python-多執行緒及生產者與消費者Python執行緒
- 多執行緒-生產者消費者問題程式碼2並解決執行緒安全問題執行緒
- java多執行緒總結六:經典生產者消費者問題實現Java執行緒
- Java多執行緒程式設計(同步、死鎖、生產消費者問題)Java執行緒程式設計
- Java 多執行緒(Java.Thread)------ 執行緒協作(生產者消費者模式)Java執行緒thread模式
- Java多執行緒-併發協作(生產者消費者模型)Java執行緒模型
- python 多執行緒實現生產者與消費者模型Python執行緒模型
- 生產者消費者模式--java多執行緒同步方法的應用模式Java執行緒
- 多執行緒下的生產者和消費者-BlockingQueue執行緒BloC
- Java多執行緒15:Queue、BlockingQueue以及利用BlockingQueue實現生產者/消費者模型Java執行緒BloC模型
- python執行緒通訊與生產者消費者模式Python執行緒模式
- python多執行緒+生產者和消費者模型+queue使用Python執行緒模型
- 多執行緒併發如何高效實現生產者/消費者?執行緒
- 用Python多執行緒實現生產者消費者模式Python執行緒模式
- 多執行緒-生產者消費者之等待喚醒機制執行緒
- java實現生產者消費者問題Java
- 二、(LINUX 執行緒同步) 互斥量、條件變數以及生產者消費者問題Linux執行緒變數
- Java多執行緒之併發協作生產者消費者設計模式Java執行緒設計模式
- linux 生產者與消費者問題Linux
- 執行緒間的協作(2)——生產者與消費者模式執行緒模式
- 多執行緒 -- 移動檔案(生產者,消費者模式應用)執行緒模式
- java多執行緒之消費生產模型Java執行緒模型
- Thinking in Java---執行緒通訊+三種方式實現生產者消費者問題ThinkingJava執行緒
- python中多程式消費者生產者問題Python