保證多執行緒安全的方式
鎖線程池程序
執行緒 執行緒又分為守護執行緒和使用者執行緒
不常用,了解即可,面試可能會問
1. 編寫類實現callable介面 , 實現call方法
class
***implements
callable
}2. 建立futuretask物件 , 並傳入第一步編寫的callable類物件
futuretask
future =
newfuturetask
<
>
(callable)
;3. 通過thread,啟動執行緒
newthread
(future)
.start()
;
獲取返回值
runnable 與 callable的相同點
runnable 與 callable的不同點
建立乙個鎖物件時新增引數fair為true,直接修改為公平鎖:lock l=new reentrantlock(true);
執行緒死鎖是指兩個或兩個以上的執行緒互相持有對方所需要的資源,由於synchronized的特性,乙個執行緒持有乙個資源,或者說獲得乙個鎖,在該執行緒釋放這個鎖之前,其它執行緒是獲取不到這個鎖的,而且會一直死等下去,因此這便造成了死鎖
如果併發的執行緒數量很多,並且每個執行緒都是執行乙個時間很短的任務就結束了,這樣頻繁建立執行緒就會大大降低 系統的效率,因為頻繁建立執行緒和銷毀執行緒需要時間. 執行緒池就是乙個容納多個執行緒的容器,池中的執行緒可以反覆使用,省去了頻繁建立執行緒物件的操作,節省了大量的時間和資源。
/**
*週期任務定長線程池:
*執行流程:
*1.判斷執行緒池中是否存在空閒執行緒
*2.存在則使用
*3.不存在空閒執行緒,且執行緒池未滿的情況下,則建立執行緒,並放入執行緒池,然後使用
*4.不存在空閒執行緒,且執行緒池已滿的情況下,則等待執行緒池存在空閒執行緒
**週期性任務執行時:
*定時執行,當某個時機觸發時,自動執行某任務
*/public
static
void
main
(string[
] args)
},5,timeunit.seconds);*/
/** *週期性執行任務
*引數1:任務
*引數2:延遲時長數字(第一次執行在什麼時間以後)
*引數3:週期時長數字(每隔多久執行一次)
*引數4:時長數字的單位
*/ service.
scheduleatfixedrate
(new
runnable()
},5,
1,timeunit.seconds)
;}
執行緒學習筆記
自定義執行緒類 author version 1.0 2019年9月9日 public class mythread extends thread 重寫run方法 override public void run 測試類 author version 1.0 2019年9月9日 public cla...
多執行緒學習筆記 執行緒
thread類 常用屬性 currentthread 獲取當前正在執行的執行緒 isalive 指示當前執行緒的執行狀態 isbackground 指示是否為後台執行緒 isthreadpoolthread 指示是否屬於託管執行緒池 managedthreadid 獲取執行緒識別符號 name 獲取...
多執行緒學習筆記
多執行緒的相關概念 什麼是程序?當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。而乙個程序又是由多個執行緒所組成的。什麼是執行緒?執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器 棧指標 程式計數器等 但 區是共享的,即不同的執行緒可以執行同樣的...