-
實現多線程的幾種方式:
- 實現Runnable接口
- 繼承Thread類
- 實現Callable接口,通過ExecutorService通過任務形式實現。
-
關於線程同步的Lock和sychronized:
- Lock比synchronized功能更強大,有能夠實現讀寫分離的讀鎖、寫鎖,有解決死鎖問題的自旋鎖等。
- Lock所屬爲代碼級別,sychronized屬jvm控制級別。
- Lock可爲公平鎖(默認非公平),即按等待的時間長短獲取(並不一定),synchronized爲非分平鎖,看jvm心情。
- Lock使用時注意釋放鎖。
-
Runnable,Callable
- Callable方法可拋出異常,可有返回值。
- Callable需轉爲FutureTask(實現了Runable接口)方可傳入Thread類。
-
計數器CountDownLatch
主要方法爲其構造方法CountDownLatch(int threadCount)、阻塞當前線程直到計數爲0方法await()、計數衰減方法countDown().
-
關卡CyclicBarrier
用於在沒有線程通信的情況下,解決兩個線程彙集在同一原點的問題。
主要方法有:
構造方法:CyclicBarrier(int count,Runnable down),count爲關卡綁定的線程數目,down爲彙集到一起後的操作。
阻塞方法:await()方法,阻塞當前線程直到所有線程彙集於一點。 -
Executors的一些方法介紹
- newSingleThreadExecutor:單任務執行器
- newFixedThreadPool:創建一個固定數目的線程池
- newCachedThreadPool:創建一個不限制線程數目的線程池,不能超過int最大值
- newScheduledThreadPool:創建一個可支持計劃作業的線程池。
多線程的一些筆記
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.