Java執行緒併發 知識點 優就業

2021-07-25 19:22:37 字數 1696 閱讀 8925

it優就業

2016-12-20 16:51

發布:乙個物件是使它能夠被當前範圍之外的**所引用:

常見形式:將物件的的引用儲存到公共靜態域;非私有方法中返回引用;發布內部類例項,包含引用。

逃逸:在物件尚未準備好時就將其發布。

不要讓this引用在建構函式中逸出。例,在建構函式中啟動執行緒,執行緒會包含物件的引用。

同步容器:對容器的所有狀態進行穿行訪問,vector、hashtable,cllections.synchronizedmap|list

併發容器:concurrenthashmap,copyonwritearraylist,concurrentlinkedqueue、blockingqueue

list 隨機訪問特性的優勢。

blocking 增加了可阻塞的get set操作

concurrenthashmap:分離鎖,為併發訪問帶來的高的吞吐量,同時幾乎沒有損失單個執行緒的訪問效能。返回弱一致性的迭代器。

迭代器的弱一致性,在迭代器生成以後會檢測容器的修改變化。

併發容器 size(), isempty() 弱化,返回近似結果。

copyonwritearraylist:每次修改容器時複製,適用迭代需求大於修改需求情況。

生產者消費者模式,運用有界阻塞佇列解耦生產者和消費者的**。

executor任務執行框架,實現了生產者消費者模式。

synchronousqueue:put等待消費者可用,take等待生產者可用,適用於消費者充足的情景。

雙端佇列(deque)關聯於竊取工作模式(work stealing),區別於生產者消費者模式中所有消費者共享乙個工作佇列,工作竊取模式每乙個消費者都有自己的雙端佇列,如果乙個消費者完成自己的全部工作,就可以偷取其它消費者佇列隊尾的任務。

工作竊取模式適用於當執行到乙個任務的某乙個單元時,可能會識別出更多的任務,如遍歷檔案。

當乙個方法能夠丟擲interruptedexception時,說明它是可阻塞方法。丟擲或捕獲interruptedexception。

synchronizer:同步者---semaphore、barrier、latch,封裝狀態,決定執行緒在此狀態下的行為(通過或阻塞),提供操控狀態的方法,高效的等待同步者進入期望的狀態。

latch閉鎖:延遲線程進度直到執行緒到達乙個終點狀態,像乙個一次性開關。可以用來確保特定活動直到其它活動完成才發生。

例如:確保乙個計算不會被執行,直到需要的資源都被初始化。

確保乙個服務不會被開始,直到依賴的其它服務已經開始。

等待,直到活動的所有部分都為繼續處理做好準備。

futuretask可以作為閉鎖,抽象的可攜帶結果的計算,通過callable實現。future.get依賴於任務的執行狀態,任務執行完成則返回結果,否則一直等待,

executor框架利用futuretask完成非同步任務。

semapher訊號量:用來控制能夠同時訪問某特定資源的活動數量或同時執行某一給定操作的數量,資源池,容器邊界。

barrier關卡:類似於閉鎖,區別所有的執行緒必須同時到達關卡,才能繼續處理,閉鎖等待的是時間,關卡等待的是其它執行緒,重複使用。通過關卡,await會為每乙個執行緒返回唯一的到達索引號,可以用它來選舉產生乙個領導,在下一次迭代中承擔一些特殊任務。

exchanger一種關卡的形式。

java併發 多執行緒知識點總結

1 web庫類 sevlet天生有多執行緒性。2 定義任務 使用runnable介面並實現run 方法。而將runnable 不返回任何值 物件程式設計工作任務的方式為 thread t new thread new task t.start 這裡start 會迅速返回,因為每個任務都由不同的執行緒...

執行緒知識點

1.join 執行緒a 呼叫了 執行緒b 的 join 方法 執行緒a 必須等待執行緒b 執行完後 才能執行 2.yield sleep wait notify 釋放鎖問題 呼叫yield sleep 執行緒 持有的鎖 不釋放 wait 呼叫方法前 必須持有鎖,呼叫之後釋放鎖,wait 返回後持有鎖...

java 多執行緒知識點總結2

4 synchronized的優化 鎖粗化與鎖消除 死鎖 公平鎖 等待時間最長的先獲取鎖 synchronized是非公平鎖,reentrantlock預設也為非公平鎖,但可以實現公平鎖 同步佇列 所有獲取鎖失敗的執行緒進入同步佇列排隊獲取鎖。等待佇列 呼叫wait 的執行緒置入等待佇列,等待not...