Java Thread一些概念

基本概念

進程和線程

  • 進程
    進程是系統進行資源分配的最小單位,其中資源包括:CPU 、內存空間、磁盤IO等
  • 線程
    線程是CPU調度的最小單位,必須依賴于進程而存在

Java中的線程

一個Java程序從main()方法執行開始,就會產生多個工作線程,線程內容如下:

  • Monitor Ctrl-Break 監控Ctrl-break中斷信號
  • Attach Listener 內存dump,線程dump,類信息統計,獲取系統屬性等。
  • Signal Dispatcher 分發給JVM信號的線程
  • Finalizer 調用對象finalize 方法的線程
  • Reference Handler 清除Reference的線程
  • main 程序入口

線程的啟動和終止

啟動

Java中啟動線程的方式只有2種:

  • 繼承于Thread,然后調用start方法
  • 實現runnable 接口,然后交給Thread執行

中斷

線程自然終止

自然終止有2種情況,第一個是run方法執行完成,第二是拋出一個未處理的異常導致線程提前結束。

中斷

安全中止則是由其他線程通過調用某個線程的interrupt方法對進行中斷操作,該中斷操作只是對該線程進行了中斷標記,并不代表線程A會立即停止操作,因此線程完全可以不理會這種中斷請求。線程通過isInterrupted來進行判斷是否被中斷,也可以調用Thread.interrupted()來進行判斷當前線程是否被中斷,但是Thread.interrupted()會同時將中斷標識改寫為false。如果一個線程處于阻塞狀態,則再線程檢查中斷中斷標識時如果發現中斷標示為true,則會再這些阻塞方法調用出拋出InterruptedException異常,并且再拋出后將線程的中斷標示位清除,即重新設置位false。

線程中的方法

  • yield方法:使當前線程讓出CPU占有權,但讓出時間是不可設定的。也不會釋放資源。所有執行yield()的線程有可能再進入到就緒態后被操作系統再次選中被執行。
  • jion 方法:把指定線程加入當前線程,可以將兩個交替執行的線程合并為順序執行,比如再B中調用了線程A的join方法,直到線程A執行完畢后,才會執行線程B。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容