Java中線程總結
本文簡要介紹在 Java 世界中, 線程相關知識。主要包含 線程的創建與銷毀;線程安全與同步;線程通訊;注意本文沒有什麼高深新知識,只緣起前段時間在翻看項目代碼的時候,發現有些同學對此有諸多誤解,故在此稍微整理一下,以幫助類似同學,同時警醒一下自己。
1. 線程的創建和銷毀;
a) .創建線程可以通過繼承 Thread 類 或 實現 Runnable 介面, 並重寫 run() 方法, 其中的run() 方法即是本線程需要執行的內容.
b). 相比於單獨繼承 Thread ,Runnable介面配合 Thread 實現會更靈活,並可以通過共享一個Runnable介面實例,在Thread中共享資源.
c). 至於線程銷毀,不推薦使用 Thread.Stop()方法, 此方法在使用不當情況下會出現死鎖,更多的時候推薦在run()方法中使用額外變數(或條件)結束此方法即可.
2. 線程安全與同步;
a). 對於需要遵循ACID原子一致性的代碼段, 可以通過 synchronized(lockKey){} 代碼塊鎖定;
b). 同時 synchronized 關鍵字可以用來修飾一個方法,表示整個方法都需要遵循ACID原子一致性,值得注意的是,此時其實的lockKey等效於this關鍵字;
b). 在鎖定的代碼塊中推薦再進行一次必要的條件判斷。
3. 線程通訊,在java的世界中可以藉助 wait() notify() notifyAll() 這三個方法來完成,這三個方法定義在Object類中,因此所有的對象都可以使用.
4.下面通過簡單的幾個代碼片段來加以說明
a). 演示線程創建與銷毀,及線程安全與同步
線程定義類
調用端
b). 演示線程通訊,本處模擬兩個線程以生產和消費者角色讀寫一個集合的示例,其中當集合中有數據的時候通知消費者處理數據,處理完後通知生產者往集合中放入數據
數據倉庫
生產者
消費者
調用端
後記:
a). 多線程屬於較基礎的知識,我們首先需要了解其最基本的概念,才能在項目中遊刃有餘的應用;
b).不管是什麼語言,其所需要的理論支持均大同小異;
c).回到最初的那個概念,在多線程中,能不需要線程互相通訊就盡量不要用,能不同步就盡量不要使用線程同步,能不使用多線程就盡量不要使用多線程,說得有些含糊,各位自己去參悟吧.
學習Java的同學注意了!!!
學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入Java學習交流群495273252,我們一起學Java!


※全面掌握Java內部類
※程序員的未來在哪裡?
※Java並發全景圖(1.1版本)
※Java多線程詳解——生產者和消費者
TAG:Java團長 |