packagecom.cloud.day1;
/*執行緒的建立方式二:
1.自定義乙個類實現
runnable
介面2.
實現介面的
run方法,把自定義執行緒的任務定義在
run方法中
3.建立
runnable
實現類物件
4.建立
thread
類實現物件,並把
runnable
實現類物件作為引數傳遞進去
5.呼叫
thread
類物件的
start
方法開啟乙個執行緒
注意:runnable
實現類物件不是執行緒物件,只有
thread
類和其子類建立的物件才是執行緒物件
*/public
classdemo6implementsrunnable
}public
static
voidmain(string args)
} }
packagecom.cloud.day1;
/*建立執行緒的第二種方式模擬購票系統
*/classsaleticket2implementsrunnable
else
} }} }
public
classdemo7 }
/*執行緒通訊:
乙個執行緒完成了自己的任務時,要通知另外乙個執行緒去完成另外乙個任務
.生產者與消費者
wait():
等待如果執行緒執行了
wait
方法,那麼該執行緒會進入等待的狀態,等待狀態下的執行緒必須要被其他執行緒呼叫
notify
方法才能喚醒。
notify():喚醒
喚醒執行緒池等待執行緒其中的乙個。
notifyall() :
喚醒執行緒池所有等待
執行緒。wait
與notify
方法要注意的事項:
1. wait
方法與notify
方法是屬於
object物件的
。2.
wait
方法與notify
方法必須要在同步**塊或者是同步函式中才能
使用。3.
wait
方法與notify
方法必需要由鎖物件呼叫
。問題一:出現了執行緒安全問題。
**錯亂了
...*/
//產品類
classproduct
//生產者
classproducerextendsthread
@override
public
voidrun()else
system.out
.println("
生產者生產出了:
"+ p.name+"
**是:
"+ p.price);
p.flag =true;
i++;
p.notifyall(); //
喚醒消費者去消費
}elsecatch(interruptedexception e)
}
} } }
} //
消費者classcustomerextendsthread
@override
public
voidrun()elsecatch(interruptedexception e)
} }}
} }public
classdemo1 }
packagecom.cloud.day1;
/* 執行緒的停止:
1.停止乙個執行緒,一般使用乙個變數來控制
2.如果需要停止乙個處於等待狀態下的執行緒,需要變數配合notify()和interrupt()使用
*/public
classdemo2extendsthread
@override
public
synchronized
voidrun()catch(interruptedexception e)
system.out
.println(thread.currentthread().getname()+":"+i);
i++;
} }public
static
voidmain(string args)
} } }
/*守護執行緒
(後台執行緒
):如果乙個程序只剩下守護執行緒,守護執行緒也會死亡
執行緒預設都不是守護執行緒
*/public
classdemo1extendsthread
@override
public
voidrun()
trycatch(interruptedexception e)
} }public
static
voidmain(string args) }
/*join()
方法模擬:兩個坐車沒買票,其中乙個去買票
*/classoneextendsthreadcatch(interruptedexception e)
system.out
.println("..............");
system.out
.println("
買票上車
"); }
}classotherextendsthreadcatch(interruptedexception e)
system.out
.println("
有票了");
} }public
classdemo2 }
java中線程問題
24.09 多執行緒 獲取名字和設定名字 掌握 1.獲取名字 通過getname 方法獲取執行緒物件的名字 2.設定名字 通過建構函式可以傳入string型別的名字 new thread start new thread yyy start 通過setname string 方法可以設定執行緒物件的...
程序中線程間通訊
一般而言,應用程式中的乙個次要執行緒總是為主執行緒執行特定的任務,這樣,主線程和次要執行緒間必定有乙個資訊傳遞的渠道,也就是主線程和次要執行緒間要進行通訊。這種執行緒間的通訊不但是難以避免的,而且在多執行緒程式設計中也是複雜和頻繁的,下面將進行說明。由於屬於同乙個程序的各個執行緒共享作業系統分配該程...
JAVA中線程同步方法
在這裡看到的 1 wait方法 該方法屬於object的方法,wait方法的作用是使得當前呼叫wait方法所在部分 塊 的執行緒停止執行,並釋放當前獲得的呼叫wait所在的 塊的鎖,並在其他執行緒呼叫notify或者notifyall方法時恢復到競爭鎖狀態 一旦獲得鎖就恢復執行 呼叫wait方法需要...