23(多執行緒2)

2021-08-28 20:50:32 字數 1314 閱讀 5236

這個概念需要解釋一下,以象棋為例,非守護執行緒相當於帥,守護執行緒相當於車馬相士,當帥都沒了,車馬相士就失去了它的意義了,就是非守護執行緒停止了,守護執行緒也就gg了。

結果就是aaaa不會輸出50次了。

同步**塊這裡也需要解釋一下,有的時候回發生一件事情,在乙個執行緒中,**還麼有完全執行結束,就被另外乙個執行緒搶占過去,所以就需要使得這個執行緒中的**執行完畢,就加上一把鎖,也就是上圖的**的示意。

宣告為同步方法,保證是一把鎖,才會使得程序之間不會出錯。鎖物件的概念很重要。

package com.haidai.thread;

/* * 執行緒安全問題:火車賣票問題

* 100張票,4個視窗賣票

*/public class demo7

}class ticket extends thread

try catch (interruptedexception e)

system.out.println(getname() + "號視窗售:這是第 " + (num--) + " 號票");

}} }

}

需要在賣票的**加上·同步鎖,這樣不會出錯。

package com.haidai.thread;

public class demo8

}class myticket implements runnable

try catch (interruptedexception e)

system.out.println(thread.currentthread().getname() + "號視窗售:這是第 " + (num--) + " 號票");

}} }

}

對於同步**塊或者同步方法,他們中的物件必須要是相同的物件才可以是的執行緒安全,好比方說,鎖就是話筒,只有乙個話筒,只有乙個人拿到了話筒,他才可以說話。

23 多執行緒

繼承自thread類,thread類是所有執行緒的父類,實現了對執行緒的抽取和封裝 建立並啟動多執行緒的步驟 建立子執行緒 mythread mt new mythread 設定執行緒的名字 mt.setname 子執行緒1 新建立的任務 public class mythread extends ...

多執行緒 18 多執行緒題2

現成程式中的test類中的 在不斷地產生資料,然後交給testdo.dosome 方法去處理,就好像生產者在不斷地產生資料,消費者在不斷消費資料。請將程式改造成有10個執行緒來消費生成者產生的資料,這些消費者都呼叫testdo.dosome 方法去進行處理,故每個消費者都需要一秒才能處理完,但要保證...

多執行緒 23 併發協作 管程法

併發協作模型生產者消費者模式的第一種管程法,它的核心要點是加了緩衝區,有了緩衝區之後,生產者和消費者之間解耦了,比如超市的中間商,生產者向中間商發商品,超市向中間商進商品,而生產者並不知道商品買給誰了。分析這個模型有幾個角色 第乙個角色生產者,第二個角色消費者,它們兩個是多執行緒,第三個是併發容器也...