好程式設計師大資料學習路線分享執行緒學習筆記二
好程式設計師大資料學習路線分享 執行緒 學習筆記二, 為什麼要讓run() 方法自動開啟 。
cpu 有隨機性,執行緒搶到 cpu ,才能幹活,所以 run() 方法必須透過 strat() 方法自動啟動 , 這樣 cpu 就獲得了一個訊號,知道該執行緒可以搶佔 cpu 資源;
手動執行垃圾回收器
原理:當執行gc 是,會觸發垃圾回收機制,開啟垃圾回收執行緒,執行 finalize 方法
cpu 的特性:多個執行緒之間是搶 cpu 的關係, cpu 有隨機性
主函式結束,主任務區結束,主執行緒隨著任務的結束而結束,執行緒隨著任務的開始而開始
建立執行緒
預設情況下,主執行緒和垃圾回收執行緒都是由系統建立
①用 Thread 建立執行緒物件
Thread thread1=new Thread(); // 只是建立 Thread 物件
thread1.start(); // 開啟執行緒
Thread 類裡的 run() 方法預設是空的,所以 start() 方法執行結果
所以需要繼承Thread 類 重寫 run() 方法
若run() 方法直接被手動呼叫, run() 對應的執行緒跟呼叫該方法所在的執行緒對應
Thread 類實現了 Runnable 介面, Runnable 介面裡面只有 run() 方法 ,Thread 類裡實現的 run() 方法也只是空方法體,需要被繼承去重寫
建立一個A 類實現 Runnable 介面,重寫 run() 方法
A a=new A();
Thread to=new Thread(A);
to.start();
給某個方法的執行緒衝突部分加鎖
鎖的條件
①鎖必須是物件
②要被所有的執行緒共享
同步程式碼塊
synchronized(this){ 程式碼塊 }
同步函式
非靜態 public synchronized void xxx(){} // 預設的鎖是 this synchronized(this)
靜態 public synchronized static void xxx(){} // 預設的鎖是當前類的位元組碼檔案 synchronized(xx.class)
notify( 終止執行緒休眠 ) wait( 執行緒休眠,不可以搶佔 cpu)
wait()--> 必須在同步環境中使用,必須使用鎖呼叫,執行這行程式碼,對應的是哪個執行緒,就
notify()--> 喚醒的是同一把鎖下的執行緒,
Lock( 顯示同步 ) 替換 Synchronized( 隱式同步 )
// 建立鎖物件 Lock lock=new ReentrantLock();
// 用於生產任務的 Condition
Condition proCon = lock.newCondition();
// 用於結束任務的 condition
Condition conCon = lock.newCondition();
// 開啟鎖
lock.lock();
proCon.await();
conCon.signal();
conCon.await();
proCon.signal();
// 關閉鎖
lock.unlock();
守護執行緒
當程式呼叫setDaemon 方法時,並且將引數設定成 true, 當前執行緒就變成了了守護執行緒,只要主執行緒結束,該守護執行緒就會結束,這個方法一定要在 start 前呼叫
join() 方法 , 優先順序高於主執行緒,主執行緒會等當前的執行緒執行完後再去執行 ; 該方法是在 start 之後 。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2658717/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師大資料學習路線分享多執行緒學習筆記程式設計師大資料執行緒筆記
- 好程式設計師大資料學習路線分享Map學習筆記程式設計師大資料筆記
- 好程式設計師大資料學習路線分享Actor學習筆記程式設計師大資料筆記
- 好程式設計師大資料學習路線分享大資料之執行緒程式設計師大資料執行緒
- 好程式設計師大資料學習路線分享TCP和UDP學習筆記程式設計師大資料TCPUDP筆記
- 好程式設計師大資料學習路線分享hive的執行方式程式設計師大資料Hive
- 好程式設計師大資料學習路線分享Hbase指令學習程式設計師大資料
- 好程式設計師Java學習路線分享多執行緒概念程式設計師Java執行緒
- 好程式設計師大資料學習路線分享MAPREDUCE程式設計師大資料
- 好程式設計師大資料學習路線分享SparkSQl程式設計師大資料SparkSQL
- 好程式設計師大資料學習路線分享HDFS學習總結程式設計師大資料
- 好程式設計師大資料學習路線分享hdfs學習乾貨程式設計師大資料
- 好程式設計師大資料學習路線Hadoop學習乾貨分享程式設計師大資料Hadoop
- 好程式設計師大資料學習路線分享大資料之字串程式設計師大資料字串
- 好程式設計師大資料學習路線之大資料自學路線二程式設計師大資料
- 好程式設計師大資料學習路線分享Lambda表示式程式設計師大資料
- 好程式設計師大資料學習路線分享UDF函式程式設計師大資料函式
- 好程式設計師大資料學習路線分享spark之Scala程式設計師大資料Spark
- 好程式設計師大資料學習路線分享HDFS讀流程程式設計師大資料
- 好程式設計師大資料學習路線分享AWK詳解程式設計師大資料
- 好程式設計師Java學習路線分享MyBatis之執行緒最佳化程式設計師JavaMyBatis執行緒
- 好程式設計師大資料學習路線分享Scala系列之物件程式設計師大資料物件
- 好程式設計師大資料學習路線分享高階函式程式設計師大資料函式
- 好程式設計師大資料學習路線分享Hadoop機架感知程式設計師大資料Hadoop
- 好程式設計師大資料學習路線分享什麼是Hash表程式設計師大資料
- 好程式設計師大資料學習路線分享Scala系列之抽象類程式設計師大資料抽象
- 好程式設計師大資料學習路線分享Scala系列之泛型程式設計師大資料泛型
- 好程式設計師大資料學習路線分享Scala系列之陣列程式設計師大資料陣列
- 好程式設計師大資料學習路線分享Scala分支和迴圈程式設計師大資料
- 好程式設計師大資料學習路線分享MapReduce全流程總結程式設計師大資料
- 好程式設計師大資料學習路線分享MapReduce全過程解析程式設計師大資料
- 好程式設計師大資料學習路線分享大資料之基礎語法程式設計師大資料
- 好程式設計師大資料學習路線之大資料自學路線一程式設計師大資料
- 好程式設計師大資料學習路線Hbase總結程式設計師大資料
- 好程式設計師大資料學習路線之mapreduce概述程式設計師大資料
- 好程式設計師大資料學習筆記:Storm架構程式設計師大資料筆記ORM架構
- 好程式設計師大資料學習路線分享hive分割槽和分桶程式設計師大資料Hive
- 好程式設計師大資料學習路線分享Scala系列之對映Map程式設計師大資料