等待(wait) 和通知(notify)
這兩個方法來自object類, 使用前必須先獲得目標的鎖.
wait()使用場景必須包含在synchronzied語句中., 當呼叫後,執行緒釋放鎖, 進入object物件的等待佇列, 等待notify() .notifyall()去喚醒.
package threads;public class waitandnotify catch (interruptedexception e)
system.out.println(system.currenttimemillis() + " : " + "t1.end");
}} }
public static class t2 extends thread catch (interruptedexception e)
}} }
public static void main(string args)
}1568212250034 : t1.start
1568212250034 : t1.wait
1568212250034 : t2.start
1568212250034 : t2.end 兩秒
1568212252034 : t1.end
等待執行緒結束join() 和 謙讓yield()
有些時候我們需要乙個執行緒依賴其他執行緒執行完畢才能,才能操作這是使用join()
join 分為2種 , 第一種是無限等待阻塞程序,直到目標執行緒執行完畢,
第二種是有時間限制, 過了時間就不等了,繼續執行下一步.
private volatile static int i = 0;public static class nums extends thread }
public static void main(string args) throws interruptedexception
yiled()是靜態方法,使用後 當前執行緒讓出cpu,繼續參與cpu的爭奪適用於優先順序低,害怕占用太多資源的執行緒.
public class yielda@override
public void run() catch (interruptedexception e) }}
} }public static void main(string args)
}
linux多執行緒程式設計基本操作(2)
linux c多執行緒總結 1 關於執行緒和程序 a 使用多執行緒的理由之一是和程序相比,它是一種非常 節儉 的多工操作方式。我們知道,在linux系統下,啟動乙個新的程序必須分配給 它獨立的位址空間,建立眾多的資料表來維護它的 段 堆疊段和資料段,這是一種 昂貴 的多工工作方式。而執行於乙個程序中...
執行緒基本操作
函式原型 include int pthread create pthread t restrict thread,const pthread attr t restrict attr,void start routine void void restrict arg 建立執行緒的函式有四個引數,第...
執行緒的基本操作 完
執行緒安全是多執行緒開發的根基,我們能夠使用volatile保證變數更新的資料其他執行緒能夠看到,但是如果兩個執行緒同時操作乙個資料,執行緒安全無法保證.下面的例子中,i的結果大概率小於我們預期的200000,原因就在於t1,t2同時獲取i值,先後寫入同乙個結果.public class sync ...