第一節 兩種建立方法
1繼承thread類,並複寫run方法
2實現runnable介面,並複寫run方法
3兩種方式的特點和優缺點,以及應用。賣票程式中,使用1方法建立的執行緒,每建立乙個執行緒,都有100張票。而我們想要的多個執行緒共同操作這100張票,這時就要使用第二種方法。
第二節 執行緒的執行狀態
1被建立 start()——>執行
2執行3凍結 使用sleep(毫秒值) ,wait()方法放棄執行資格。
喚醒執行緒notify() ,notify()是繼承自object類中的方法。執行緒被喚醒後,進入了阻塞狀態
4阻塞狀態 一種臨時狀態,具備執行資格,但沒有執行權
5消亡 使用stop()方法;run方法執行完畢。
第三節 獲取執行緒物件以及名稱
每個執行緒都有自己預設的名稱。在建立執行緒時,可以通過string型別的引數傳入的方式或是使用setname()方法給執行緒自定義名稱。得到執行緒物件後,可以通過getname()獲取當前執行緒的名稱。
獲取執行緒物件。通過靜態的currentthread()方法可以獲取當前執行緒物件。
classticket implements runnnable。其中物件可以是任意的例項化物件。這個物件稱為鎖旗標,或監視器。只有持有鎖的執行緒可以在同步**塊中執行。執行緒離開同步**塊時將鎖釋放。
第二節 同步函式
同步**塊用來封裝**,函式也是用來封裝**。可以將同步的關鍵字synchronized用於修飾函式,例如public synchronized void(){}
第三節 鎖
同步函式的鎖匙this。靜態同步函式的鎖是class物件。即.class檔案
同步函式的鎖是this的驗證
class ticket implements runnable
int ticket = 100 ;
object obj = new object();
boolean flag = true ;
public void run()
if(flag)
while(true)
synchronized(obj)
if(ticket> 0)
trycatch(exceptione){}
system.out.println(thread.currentthread().getname()+" -------"+ticket --);
//show();
else
while(true)
show();
public synchronized void show()
if(ticket > 0)
trycatch(exceptione){}
system.out.println(thread.currentthread().getname()+" "+ticket --);
class ticketdemo
public static void main(string args)
ticket tic = new ticket();
thread thr1 = newthread(tic,"one");
thread thr2 = newthread(tic,"two");
thr1.start();
trycatch(exceptione){};
tic.flag = false;
thr2.start();
第四節 死鎖
同步中巢狀同步,而持有的鎖不同
餓汗式classsingle
public static single getinstance{
if(s == null){
synchronized(single.class){
if(s == null ){
s= new single();
return s ;
第一節 執行緒間通訊
其實就是多個執行緒在操作同乙個資源,但是操作的動作不同。
定義r.notify() ; r.wait();
第二節 解決安全問題
第三節 等待喚醒機制
第四節 **優化
第一節 停止執行緒
interrupt(),此方法會丟擲異常。
第二節 守護執行緒
第四節 join方法
a執行緒執行時,執行到了b執行緒呼叫join方法的語句,會釋放執行權,處於凍結狀態,
直至b執行緒執行結束,a才會執行。join方法,可以用來臨時加入執行緒執行。
方法得到執行權的執行緒執行完畢,。
第五節 優先順序&yield方法
優先順序代表搶執行權的頻率,所有執行緒包括主線程預設優先順序是5。優先順序可以從1~10。
static int max_priority
執行緒可以具有的最高優先順序。
static int min_priority
執行緒可以具有的最低優先順序。
static int norm_priority
分配給執行緒的預設優先順序。
更改執行緒的優先順序。void setpriority(intnewpriority)
static void yield()暫停當前正在執行的執行緒物件,並執行其他執行緒。稍微減緩執行緒執行的頻率
JAVA多執行緒基礎知識複習一
一.執行緒的基礎知識 1.什麼是程序 它是執行中的程式 2.什麼是執行緒 又稱輕量級程序,是程式的最小單元 3.建立執行緒的兩種方法 1 繼承thread類 public class demo1 class mythread extends thread 2 實現runable介面 public c...
Java基礎複習執行緒
執行緒 實現多執行緒的兩種方法 繼承thread類,重新run方法 thread a new mythread 子執行緒 thread.start 實現runnable介面,實現run方法。myrunnable my new myrunable 在這個myrunnable類中已經重寫了run方法 t...
Java基礎 多執行緒
多執行緒的概念,如何在程式中建立多執行緒 thread runnable 執行緒安全問題,執行緒的同步,執行緒之間的通訊 死鎖。一 建立執行緒和啟動執行緒。為什麼要覆蓋run方法 thread類用於描述執行緒。該類就定義了乙個功能。用於儲存執行緒要執行的 該儲存功能就是run方法。也就是說threa...