好程式設計師大資料學習路線分享執行緒學習筆記二
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之後。
相關推薦
好程式設計師大資料學習路線分享執行緒學習筆記二
cpu有隨機性,執行緒搶到cpu,才能幹活,所以run()方法必須通過strat()方法自動啟動,這樣cpu就獲得了一個訊號,知道該執行緒可以搶佔cpu資源; 手動執行垃圾回收器 原理:當執行gc是,會觸發垃圾回收機制,開啟垃圾回收執行緒,執行finalize方法 &
好程式設計師大資料高階班分享10個大資料專業術語
好程式設計師大資料高階班分享10個大資料專業術語,大資料就業市場供小於求,人才高度緊缺,企業需求量大!IT行業圈子極大,工程師
好程式設計師大資料基礎教程分享TextFile分割槽問題
val rdd1 = sc.parallelize(List(2,3,4,1,7,5,6,9,8)) 獲取分割槽的個數:
好程式設計師大資料學習路線分享Hbase指令學習
好程式設計師大資料學習路線分享Hbase指令學習 啟動: 1、啟動zk zkServer.sh start 2、
好程式設計師大資料學習路線分享UDF函式
1.為什麼需要UDF? 1)、因為內部函式沒法滿足需求。 2)、hive它本身就是一個靈活框架,允許用自定義模組功能,如可以自
好程式設計師大資料學習路線分享函式+map對映+元祖
好程式設計師大資料學習路線分享函式+map對映+元祖,大資料各個平臺上的語言實現 hadoop 由jav
好程式設計師大資料學習路線分享HDFS讀流程
1.客戶端或者使用者通過呼叫FileSystem物件的Open()方法開啟需要讀取的檔案,這時就是HDSF分散式系統所獲取的一個物
好程式設計師大資料學習路線分享Scala系列之陣列
好程式設計師大資料學習路線分享Scala系列之陣列,陣列(Array) 1. 定長陣列 建立一個定長陣列的方式
好程式設計師大資料學習路線分享Map學習筆記
好程式設計師大資料學習路線分享Map學習筆記,set底層是預設value的map Map的常用方法 &nb
好程式設計師大資料學習路線分享Scala系列之物件
1. 單例物件 在Scala中沒有靜態方法和靜態欄位,但是可以使用object這個語法結構來達到同樣的目的 1.scala類似於Java中的工具類,可以用來存放工具函式和常量 2.高效共享單個不可變的例項 3.單例模式 單例物件雖然類似於Java中的工具類,但它不是,還是一個物件,可以把單例物
好程式設計師大資料學習路線之mapreduce概述
與HDFS解決問題的原理類似,HDFS是將大的檔案切分成若干小檔案,然後將它們分別儲存到叢集中各個主機中。 同樣原理,mapreduce是將一個複雜的運算切分成若個子運算,然後將它們分別交給叢集中各個主機,由各個主機並行運算。 1.1 mapreduce產生的背景 海量資料在單機上處
好程式設計師大資料學習路線之zookeeper乾貨
好程式設計師大資料學習路線之zookeeper乾貨,上週學習了zookeeper,一開始感覺不容易理解,後來隨著學習的深入,漸漸地
好程式設計師大資料入門學習之Hadoop技術優缺點
開發十年,就只剩下這套架構體系了! >>>
好程式設計師大資料分享:Hbase精解
好程式設計師大資料分享:Hbase精解,為什麼有hbase?hbase是什麼?Hbase的架構。 一、 為什
好程式設計師大資料分享Shell中陣列講解
好程式設計師大資料分享Shell中陣列講解,陣列是Shell中非常重要的組成部分,它藉助索引將多個獨立的資料儲存為一個集合。陣列分
好程式設計師大資料教程Hadoop全分佈安裝(非HA)
開發十年,就只剩下這套架構體系了! >>>
好程式設計師大資料教學點睛:Hadoop基礎篇
好程式設計師大資料教學點睛:Hadoop基礎篇,Hadoop包含兩個部分: 1.Hadoop Distributed Fil
好程式設計師大資料教程:SparkShell和IDEA中編寫Spark程式
好程式設計師大資料教程:SparkShell和IDEA中編寫Spark程式,spark-shell是Spark自帶的互動式Shel
好程式設計師大資料解析 SQL優化方案精解十則
好程式設計師大資料解析 SQL優化方案精解十則,SQL優化是對資料庫操作效率提高的重要課題,因此先直入正題,與大家分
好程式設計師大資料知識點精講 大資料之Linux
好程式設計師大資料知識點精講 大資料之Linux -Linux是什麼? Linux是一套作業系統,不是應用程