a. new 新建(例如:剛剛買的新車,還未駕駛)
b. runnable 可執行(例如:駕駛車)
c. blocked 鎖阻塞(例如: 走在路上,堵車了)
d. waiting 無限等待(例如: 車子由於違停的情況,被交警拖走了,需要通知取車)
e. timed waiting 計時等待(例如: 車子走在路上,等待紅綠燈,紅燈倒計時結束)
f. teminated 被終止(例如:車子使用完畢,賣出去了,銷毀了)
2.1、方法等待與喚醒方法:
a.等待: object 當中的方法 wait()
b.喚醒: object 當中的方法 notify() notifyall()
2.2、**結構結構: run() - while(true) -> synchronized(鎖) -> if wait -> 改變bian ->notify
3.1、執行緒池的含義及優點含義:
其實就是乙個容納多個執行緒的容器,其中的執行緒可以反覆使用,省去了頻繁建立執行緒物件的操作,無需反覆建立執行緒而消耗過多資源。
優點: a.資源消耗降低
b.響應速度變快
c.管理執行緒容易
3.2、執行緒池操作步驟a. executorservice service = executors.newfixedthreadpool(2); //建立執行緒池物件。
b. myrunnable r = new myrunnable(); //建立runnable介面子類物件。(task)
c. service.submit(r); //提交runnable介面子類物件。(take task)
d. service.shutdown(); //關閉執行緒池(一般不做)。
標準格式:
(type1 param1,type2 param2)->
簡化格式:
編譯器都可以推斷出lambda表示式的引數型別,所以引數型別可以省略(param1,param2)->
省略小括號:
當lambda表示式的引數個數只有乙個,可以省略小括號:param->
省略大括號:
當lambda表示式只包含一條語句時,可以省略大括號、return和語句結尾的分號;param->語句體
執行緒狀態 執行緒池
1.執行緒狀態變遷 2.為什麼notify notifyall wait要在同步方法或塊中執行 2.1在j a中,所有物件都能夠被作為 監視器monitor 指乙個擁有乙個獨佔鎖,乙個入口佇列和乙個等待佇列的實體entity。所有物件的非同步方法都能夠在任意時刻被任意執行緒呼叫,此時不需要考慮加鎖的...
執行緒間通訊 執行緒池 Lambda表示式
注意注意注意!lambda是1.8的新特性,之前的版本用不了的。lambda主要用於簡化 對於提高效率,減少記憶體等沒有作用 最典型的例題就是生產者與消費者模型 1 定義乙個生產手機車間的類phonefactory 2 定義乙個生產線程任務的類producetask 並實現執行緒任務介面runnab...
執行緒池的狀態
running 這是最正常的狀態,接受新的任務,處理等待佇列中的任務。執行緒池的初始化狀態是running。執行緒池被一旦被建立,就處於running狀態,並且執行緒池中的任務數為0。shutdown 不接受新的任務提交,但是會繼續處理等待佇列中的任務。呼叫執行緒池的shutdown 方法時,執行緒...