執行緒間的通訊和執行緒排程 傳智播客

2021-09-27 21:29:20 字數 2543 閱讀 6706

一.執行緒間的通訊

1.多個執行緒操作共享資源,但是任務不一樣

class resourcecatch(interruptedexception e)

} this.name = name+num;

system.out.println(thread.currentthread().getname()+"生產了"+this.name);

num++;

this.flag = true;

this.notify(); }

public synchronized void out()catch(interruptedexception e)

} system.out.println(thread.currentthread().getname()+"消費了............"+this.name);

this.flag = false;

this.notify(); }}

class producer implements runnable

@override

public void run() }}

public class consumer implements runnable

@override

public void run() }}

public class mythread

}

wait、notify、notifyall這些方法必須定義在同步中,因為這些方法是用來監視執行緒狀態的,並且需要明確是哪乙個鎖上的執行緒。

2.jdk5.0

class resoursecatch(interruptedexception e)

}this.name = name+nums;

nums++;

system.out.println(thread.currentthread().getname()+"生產了"+this.name);

flag = true;

con.signal();

}finally }

public void out()catch(interruptedexception e)

}system.out.println(thread.currentthread().getname()+"......消費了烤鴨......"+this.name);

flag = false;

pro.signal();

}finally }}

class producer implements runnable

@override

public void run() }

}class consumer implements runnable

@override

public void run() }}

public class producerconsumer

}

用lock介面替代了同步關鍵字synchronized,將原來對獲取鎖,釋放鎖的操作(隱式)變為顯示操作了。

用condition介面替代了object的監視器方法,封裝成了監視器物件,可以與任意鎖進行組合。

二.執行緒排程

1.為什麼使用

程式中的多個執行緒是併發執行的,在某個執行緒想要被執行就必須要獲得cpu的執行權。jvm為執行緒分配cpu使用權的機制被稱為執行緒的排程。

2.兩種排程模型

3.執行緒優先順序

public class mythread implements runnable	}	

public static void main(string args)

}

用1-10來表示,10最高,可通過setpriority()來設定優先順序,引數為1-10或者3個常量。

4.執行緒的休眠

通過呼叫thread.sleep()方法來讓當前執行緒暫停執行,釋放cpu執行權和執行資格,讓別的執行緒先執行。

休眠時間超時,執行緒就進入就緒狀態,重新具備cpu執行資格,在就緒執行緒池中等待cpu執行權。

5.執行緒讓步

和sleep方法功能類似,都是讓出執行緒的cpu執行權,區別在於yeild方法不會讓執行緒經過阻塞狀態,而是直接進入就緒狀態。

public class mythread implements runnable

} }public static void main(string args)

}

6.執行緒插隊

當正在執行的執行緒呼叫了其它執行緒的join方法時,呼叫者進入阻塞狀態,當其它執行緒執行完畢,呼叫者進入就緒狀態。

public class mythread implements runnable	}	

public static void main(string args) throws interruptedexception

} }}

多執行緒的概述和狀態 傳智播客

public class a public class basic 輸出的結果中,main over在任意一行中都是可能的 main over finalize called finalize called finalize called 二.執行緒的狀態 執行緒狀態主要有5個狀態,分別是建立 就緒...

傳智播客mysql分頁的實現 傳智播客 分頁

整理了一宿,終於找到了頭緒,在頭腦還算清醒時,整理下分頁的筆記.我這個分頁用的是oracle的資料庫.他在查詢時涉及到了乙個偽列.table名為 employees.建立bean物件employee.屬性如下 private int employee id private string first ...

程序間通訊和執行緒間通訊

程序間通訊 ipc,interprocess communication 是一組程式設計介面,讓程式設計師能夠協調不同的程序,使之能在乙個作業系統裡同時執行,並相互傳遞 交換資訊。這使得乙個程式能夠在同一時間裡處理許多使用者的要求。因為即使只有乙個使用者發出要求,也可能導致乙個作業系統中多個程序的執...