《Java 多線程編程核心技術》- 筆記

來源:互聯網
上載者:User

標籤:null   priority   volatile   分配   方便   color   輸入   thread   定時器   

  作為業務開發人員,能夠在工作中用到的技術其實不多。雖然平時老是說什麼,多線程,並發,注入,攻擊!但是在實際工作中,這些東西不見得用得上。因為,我們用的架構已經把這些事做掉了。

  比如web開發,外面有大量的請求進來,按理說,我們應該考慮並發問題。但其實,spring接到請求,分配到controller之後,就已經是安全執行緒的了,所以我們要做的就是,從controller開始,到最後請求響應結束,保證安全執行緒即可。

  多線程好像有很多東西需要注意,閱讀《Java 多線程編程核心技術》後,做個總結,總體來說,其實也沒那麼多事,沒那麼複雜。

1. 多線程基礎

  java的多線程,就體現在Thread類與Runable介面!共用資料,才存線上程安全問題,不共用資料不存線上程安全。java的很多停止線程的方法已經廢除,不建議使用如: resume,stop,suspend方法。設定線程優先順序(setPriority)可能提高線程執行的速度。守護線程的存在需要至少一個非守護線程在運行,也就是說守護線程不能獨立存在,其能力是比較低的,比如GC就是守護線程,當你的代碼在執行時,GC就在運行,隨時進行記憶體回收,當你的程式執行完成後,GC線程就不存在了。

2. 對象及變數的並發訪問

  synchronized同步方法,鎖對象,鎖代碼塊,鎖方法,鎖變數,

  valatile關鍵字,使用volatile線程解決同步死迴圈不停止問題。volatile強制從公用堆中獲得變數的值,使保持一致性。

 3. 線程間通訊

  wait/notify 是最基本的實現線程間通訊的方式。很方便的實現了,消費者/生產者模式。

  wait方法後,立即釋放鎖,notify鎖不釋放。即wait方法執行後,後續並發請求即可進入該塊,而notify則需要等到synchronized代碼塊執行完成後,才會釋放鎖。

  notifyAll()喚醒所有等待線程。

  join()方法釋放鎖等待線程執行完成。Thread.sleep()不釋放鎖等待。

  通過管道進行通訊,以字元流形式傳遞。PipeWriter,PipeReader,outputSream.connect(inputStream)將輸入資料流與輸出聯絡在 一起。

  ThreadLocal,可認為是一個線程級的全域變數,即在本線程中,隨處都可以取到該值,而不必擔心安全執行緒問題。set(),get()方法進行設定與取用。

4. Lock的使用

  ReentrantLock,

5. 定時器timer

  timer.schedule(task, dateRef) 執行一次, timer.schedule(task, dateRef, period) 周期性執行。
6. 單例模式與多線程

  if(obj == null) {    synchronized(MyObject.class) {      if(obj == null) {        obj = new MyObject();      }    }  }

  額,這麼看來,多線程的知識還是好少呢。東西不要太多,夠精就行!

《Java 多線程編程核心技術》- 筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.