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