isinterrupted:不能改變interrupted屬性值,只是返回這個屬性的值; thread類的靜態方法interrupted設定interrupted屬性為false。推薦使用isinterrupted()
deuqe 雙端佇列
uncaughtexceptionhandler介面 實現 uncaughtexception()方法列印異常,跑出異常的執行緒** thread.setuncaughtexceptionhandler()
4. readwritelock解決了這個問題,當寫操作時,其他執行緒無法讀取或寫入資料,而當讀操作時,其它執行緒無法寫入資料,但卻可以讀取資料
5
semaphore(int permits, boolean fair) fair執行緒是否公平獲取
訊號量(semaphore)可以允許多個執行緒訪問,每次
acquire()數量減1,每次
release() 數量加1,當數量為0的時候將不允許執行緒進入
6 countdownlatch類 :初始化數量,在未達到0之前一直在awai(),其他方法呼叫countdown();方法減1,當計數器達到0的時候
countdownlatch喚醒等待的執行緒,也可以設定當超過一定時間不再等待直接執行。例子開會的時候等人,沒到一人減1,當人到齊後會議開始。
只准進入一次。
7 cyclicbarrier 等待所有執行緒準備就緒,所有執行緒再一起執行
countdownlatch 某個執行緒等待其他執行緒完成,然後在執行
phaser 分多個階段同步執行緒,當某個執行緒沒有滿足條件完成該階段,其他執行緒不需要等待該執行緒,當所有完成該階段的執行緒都完成了,所有執行緒才會繼續下乙個階段。
當乙個執行緒到達exchange呼叫點時,如果它的夥伴執行緒此前已經呼叫了此方法,那麼它的夥伴會被排程喚醒並與之進行物件交換,然後各自返回。如果它的夥伴還沒到達交換點,那麼當前執行緒將會被掛起,直至夥伴執行緒到達——完成交換正常返回;或者當前執行緒被中斷——丟擲中斷異常;又或者是等候超時——丟擲超時異常
exchangerexchanger;
exchanger.exchange(data);
8. threadpoolexecutor list>> r = null; r 接受callable返回的結果物件result
invokeany() 返回任務list中的第乙個返回結果
invokeall() 返回任務list中的所有返回結果
9.
linkedblockingqueue 阻塞佇列
其中主要用到put和take方法,put方法在佇列滿的時候會阻塞直到有佇列成員被消費,take方法在佇列空的時候會阻塞,直到有佇列成員被放進來
先進先出等特性,是作為生產者消費者的首選
可以指定容量,也可以不指定,不指定的話,預設最大是integer.max_value
concurrentlinkedqueue 非阻塞佇列
4. readwritelock解決了這個問題,當寫操作時,其他執行緒無法讀取或寫入資料,而當讀操作時,其它執行緒無法寫入資料,但卻可以讀取資料
5 semaphore(int permits, boolean fair) fair執行緒是否公平獲取
訊號量(semaphore)可以允許多個執行緒訪問,每次
acquire()數量減1,每次
release() 數量加1,當數量為0的時候將不允許執行緒進入
6 countdownlatch類 :初始化數量,在未達到0之前一直在awai(),其他方法呼叫countdown();方法減1,當計數器達到0的時候
countdownlatch喚醒等待的執行緒,也可以設定當超過一定時間不再等待直接執行。例子開會的時候等人,沒到一人減1,當人到齊後會議開始。
只准進入一次。
7 cyclicbarrier 等待所有執行緒準備就緒,所有執行緒再一起執行
countdownlatch 某個執行緒等待其他執行緒完成,然後在執行
phaser 分多個階段同步執行緒,當某個執行緒沒有滿足條件完成該階段,其他執行緒不需要等待該執行緒,當所有完成該階段的執行緒都完成了,所有執行緒才會繼續下乙個階段。
當乙個執行緒到達exchange呼叫點時,如果它的夥伴執行緒此前已經呼叫了此方法,那麼它的夥伴會被排程喚醒並與之進行物件交換,然後各自返回。如果它的夥伴還沒到達交換點,那麼當前執行緒將會被掛起,直至夥伴執行緒到達——完成交換正常返回;或者當前執行緒被中斷——丟擲中斷異常;又或者是等候超時——丟擲超時異常
exchangerexchanger;
exchanger.exchange(data);
8. threadpoolexecutor list>> r = null; r 接受callable返回的結果物件result
invokeany() 返回任務list中的第乙個返回結果
invokeall() 返回任務list中的所有返回結果
9.
linkedblockingqueue 阻塞佇列
其中主要用到put和take方法,put方法在佇列滿的時候會阻塞直到有佇列成員被消費,take方法在佇列空的時候會阻塞,直到有佇列成員被放進來
先進先出等特性,是作為生產者消費者的首選
可以指定容量,也可以不指定,不指定的話,預設最大是integer.max_value
concurrentlinkedqueue 非阻塞佇列
Java7併發程式設計 3 執行緒同步輔助類
常用的同步有synchronized關鍵字 lock介面以及實現類,如reentrantlock reentrantreadwritelock中的readlock和writelock。在本章中將以以下幾個更高階的同步機制來實現多執行緒的同步。是一種計數器,用來保護乙個或則多個共享資源的訪問,它是併發...
Java7併發程式設計實戰(一) 執行緒的管理
1 繼承thread類,並且覆蓋run 方法 2 建立乙個實現runnable介面的類。使用帶引數的thread構造器來構造 2 example 計算列印乘法表 首先建立乙個calculator類,實現runnable介面 public class calculator implements run...
Java7併發程式設計實戰(一) 執行緒的等待
試想乙個情景,有兩個執行緒同時工作,還有主線程,乙個執行緒負責初始化網路,乙個執行緒負責初始化資源,然後需要兩個執行緒都執行完畢後,才能執行主線程 首先建立乙個初始化資源的執行緒 public class datasourcesloader implements runnable catch int...