摘要:歡迎進(jìn)入基礎(chǔ)課程博客地址本系列文章將主要針對一些基礎(chǔ)知識(shí)點(diǎn)進(jìn)行講解,為平時(shí)歸納所總結(jié),不管是剛接觸開發(fā)菜鳥還是業(yè)界資深人士,都希望對廣大同行帶來一些幫助。若有問題請及時(shí)留言或加。
歡迎進(jìn)入JAVA基礎(chǔ)課程
博客地址:https://blog.csdn.net/houjiyu...
本系列文章將主要針對JAVA一些基礎(chǔ)知識(shí)點(diǎn)進(jìn)行講解,為平時(shí)歸納所總結(jié),不管是剛接觸JAVA開發(fā)菜鳥還是業(yè)界資深人士,都希望對廣大同行帶來一些幫助。若有問題請及時(shí)留言或加QQ:243042162。
寄語:生產(chǎn)者消費(fèi)者問題
你失落過嗎?你緊張過嗎?你憧憬過嗎?無論生活瑣事中還是繁忙的工作中,我想大部分人會(huì)遇到類似的情況,無形中壓力、失落、失望像座大山一樣頂在自己的胸口闖不過起來。于是,你開始憧憬,開始幻想,要我是換個(gè)方式結(jié)局可能就不一樣了。殊不知,人生沒有如果!調(diào)整好心態(tài),未雨綢繆,天道酬勤!
1. 背景
有五個(gè)哲學(xué)家,他們的生活方式是交替地進(jìn)行思考和進(jìn)餐,哲學(xué)家們共用一張圓桌,分別坐在周圍的五張椅子上,在圓桌上有五個(gè)碗和五支筷子,平時(shí)哲學(xué)家進(jìn)行思考,饑餓時(shí)便試圖取其左、右最靠近他的筷子,只有在他拿到兩支筷子時(shí)才能進(jìn)餐,進(jìn)餐完畢,放下筷子又繼續(xù)思考。
2. 代碼實(shí)現(xiàn)
//定義哲學(xué)家類,每個(gè)哲學(xué)家相當(dāng)于一個(gè)線程
class Philosopher extends Thread{
private String name;
private Fork fork;
public Philosopher(String name,Fork fork){
super(name);
this.name=name;
this.fork=fork;
}
public void run(){//每個(gè)哲學(xué)家的動(dòng)作,思考-》拿起筷子-》吃-》放下筷子
while (true){
thinking();
fork.takeFork();
eating();
fork.putFork();
}
}
//模擬思考
public void thinking(){
System.out.println("我在思考:"+name);
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//模擬吃放
public void eating(){
System.out.println("我在吃:"+name);
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
class Fork{
//5雙筷子,初始未未使用
private boolean[] used={false,false,false,false,false};
//拿起筷子
public synchronized void takeFork(){
String name=Thread.currentThread().getName();
int i=Integer.parseInt(name);
while (used[i]||used[(i+1)%5]){//左右手有一只被使用則等待
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
used[i]=true;
used[(i+1)%5]=true;
}
//釋放筷子
public synchronized void putFork(){
String name=Thread.currentThread().getName();
int i=Integer.parseInt(name);
used[i]=false;
used[(i+1)%5]=false;
notifyAll();
}
}
public class PhilosopherMain {
public static void main(String[] args) {
Fork fork=new Fork();
new Philosopher("0",fork).start();
new Philosopher("1",fork).start();
new Philosopher("2",fork).start();
new Philosopher("3",fork).start();
new Philosopher("4",fork).start();
}
}
輸出結(jié)果
我在思考:0 我在思考:1 我在思考:2 我在思考:3 我在思考:4 我在吃:0 我在吃:2 我在思考:0 我在吃:4 我在思考:2 我在吃:1 我在思考:4 我在吃:3 我在思考:1 我在吃:0 我在思考:3 我在吃:2 我在思考:0 我在吃:4 我在思考:2 我在吃:1 我在思考:4 我在吃:3 我在思考:1 我在吃:0 我在思考:3 我在吃:2 我在思考:0 我在吃:4 我在思考:2
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/104700.html
摘要:歡迎進(jìn)入基礎(chǔ)課程博客地址本系列文章將主要針對一些基礎(chǔ)知識(shí)點(diǎn)進(jìn)行講解,為平時(shí)歸納所總結(jié),不管是剛接觸開發(fā)菜鳥還是業(yè)界資深人士,都希望對廣大同行帶來一些幫助。若有問題請及時(shí)留言或加。 歡迎進(jìn)入JAVA基礎(chǔ)課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對JAVA一些基礎(chǔ)知識(shí)點(diǎn)進(jìn)行講解,為平時(shí)歸納所總結(jié),不管是剛接觸JAVA開發(fā)菜鳥還是業(yè)界...
摘要:寄語天眼之父南仁東,心無旁騖,為崇山峻嶺間的中國天眼燃盡生命,看似一口大鍋,天眼是世界上最大最靈敏的單口徑射電望遠(yuǎn)鏡,可以接受百億光年外的電磁信號(hào)。南仁東總工程師執(zhí)著追求科學(xué)夢想的精神,將激勵(lì)一代又一代科技工作者繼續(xù)奮斗,勇攀世界科技高峰。 歡迎進(jìn)入JAVA基礎(chǔ)課程 博客地址:https://segmentfault.com/a/11...本系列文章將主要針對JAVA一些基礎(chǔ)知識(shí)點(diǎn)進(jìn)行...
摘要:寄語天眼之父南仁東,心無旁騖,為崇山峻嶺間的中國天眼燃盡生命,看似一口大鍋,天眼是世界上最大最靈敏的單口徑射電望遠(yuǎn)鏡,可以接受百億光年外的電磁信號(hào)。南仁東總工程師執(zhí)著追求科學(xué)夢想的精神,將激勵(lì)一代又一代科技工作者繼續(xù)奮斗,勇攀世界科技高峰。 歡迎進(jìn)入JAVA基礎(chǔ)課程 博客地址:https://segmentfault.com/a/11...本系列文章將主要針對JAVA一些基礎(chǔ)知識(shí)點(diǎn)進(jìn)行...
摘要:一個(gè)進(jìn)程可以有多個(gè)線程。線程又叫做輕量級進(jìn)程。這樣兩個(gè)進(jìn)程相互無休止地等待下去,均無法繼續(xù)執(zhí)行,此時(shí)兩個(gè)進(jìn)程陷入死鎖狀態(tài)。不剝奪條件進(jìn)程所獲得的資源在未使用完畢之前,不能被其他進(jìn)程強(qiáng)行奪走,即只能由獲得該資源的進(jìn)程自己來釋放只能是主動(dòng)釋放。 歡迎進(jìn)入JAVA基礎(chǔ)課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對JAVA一些基礎(chǔ)知識(shí)點(diǎn)進(jìn)...
摘要:一個(gè)進(jìn)程可以有多個(gè)線程。線程又叫做輕量級進(jìn)程。這樣兩個(gè)進(jìn)程相互無休止地等待下去,均無法繼續(xù)執(zhí)行,此時(shí)兩個(gè)進(jìn)程陷入死鎖狀態(tài)。不剝奪條件進(jìn)程所獲得的資源在未使用完畢之前,不能被其他進(jìn)程強(qiáng)行奪走,即只能由獲得該資源的進(jìn)程自己來釋放只能是主動(dòng)釋放。 歡迎進(jìn)入JAVA基礎(chǔ)課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對JAVA一些基礎(chǔ)知識(shí)點(diǎn)進(jìn)...
閱讀 1465·2021-11-25 09:43
閱讀 1537·2021-09-26 09:55
閱讀 2683·2021-09-10 11:20
閱讀 3613·2019-08-30 15:55
閱讀 1674·2019-08-29 13:58
閱讀 1457·2019-08-29 12:36
閱讀 2576·2019-08-29 11:18
閱讀 3632·2019-08-26 11:47