1. 程式人生 > >好程式設計師大資料學習路線分享執行緒學習筆記二

好程式設計師大資料學習路線分享執行緒學習筆記二

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是一套作業系統,不是應用程