多執行緒之abc順序列印10次

2021-08-25 02:31:05 字數 910 閱讀 4348

package com.ghgj.cn.thread;

public class threadabc catch (interruptedexception e)

}system.out.println("a");

thread1=false;//保證本執行緒不死

thread2=true;//喚醒2執行緒

thread3=false;//保證3執行緒不死

abc.notifyall();}}

} }).start();

new thread(new runnable() catch (interruptedexception e)

}system.out.println("b");

thread1=false;

thread3=true;

thread2=false;

abc.notifyall();}}

} }).start();

new thread(new runnable() catch (interruptedexception e)

}system.out.println("c");

thread1=true;

thread2=false;

thread3=false;

abc.notifyall();}}

} }).start();

}}在同一時間只有乙個執行緒可訪問該類的例項.

執行緒間相互喚醒的話就需要借助object.wait(), object.nofity()了。

thread.sleep()與object.wait()二者都可以暫停當前執行緒,釋放cpu控制權,主要的區別在於object.wait()在釋放cpu同時,釋放了物件鎖的控制,而sleep不會,理解了這些解決這道面試題應該就不成問題了

參考自:

學習 多執行緒順序列印ABC

深夜睡不著,更新一波,突然想起了兩個月之前的一次面試的懊悔。為什麼懊悔呢,因為面試官出的題很簡單很簡單,但是我想太多了,導致出糗了。題目,有三個執行緒,按順序列印123。public class test1 extends thread thread b newthread new runnable...

多執行緒順序列印ABC 實現讀寫鎖

1 多執行緒順序列印abc include include include include sem t sem id1,sem id2,sem id3 void func1 void 宣告 void func2 void void func3 void int main void void func...

多執行緒按順序列印

於leetcode1114 我們提供了乙個類 public class foo public void second public void third 三個不同的執行緒將會共用乙個 foo 例項。請設計修改程式,以確保 second 方法在 first 方法之後被執行,third 方法在 seco...