欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java 多線程使用要點分析

 更新時間:2016年12月04日 10:30:33   投稿:lqh  
這篇文章主要介紹了Java 多線程使用要點分析的相關資料,Java 多線程開發(fā)需要主要的細節(jié)問題很多,這里就說下,需要的朋友可以參考下

多線程細節(jié)問題

sleep方法和wait方法的異同點?

相同點:

讓線程處于凍結狀態(tài).

不同點:

sleep必須指定時間
wait可以指定時間也可以不指定時間

sleep時間到,線程處于臨時阻塞狀態(tài)或者運行態(tài)
wait如果沒有時間,必須通過notify或者notifyAll喚醒

sleep不一定非要定義在同步中
wait必須定義在同步中

都定義在同步中時
sleep放執(zhí)行權,不放鎖
wait放執(zhí)行權,放鎖

syschronized(obj)
 {
   wait();// 0 1 2 
   code...
 }
 syschronized(obj)
 {
  notifyAll();// 3
  code...
 }

線程如何停止

stop方法

stop方法已經過時,看描述發(fā)現(xiàn),有其他解決方案.
線程結束:就是讓線程任務代碼執(zhí)行完,run方法結束
run方法如何結束?
通過定義循環(huán)

注意:萬一線程在任務中處于凍結狀態(tài)他還能判斷標記嗎?
所謂的中斷狀態(tài)并不是停止線程.
interrupt中斷狀態(tài)使
如果目標線程等待很長時間,則應使用 interrupt 方法來中斷該等待
所謂的中斷并不是停止線程。
interrupt的功能是 將線程的凍結狀態(tài)清除,讓線程恢復到的運行狀態(tài)(讓線程重新具備cpu的執(zhí)行資格)。
因為時強制性的所以會有異常InterruptedException發(fā)生,可以在catch中捕獲異常,
在異常處理中,改變標記讓循環(huán)結束,讓run方法結束。

守護線程

守護線程:也可以理解為后臺線程,之前創(chuàng)建的都是前臺線程。
只要線程調用了setDaemon(true);就可以把線程標記為守護線程。
前臺后臺線程運行時都是一樣的,獲取CPU的執(zhí)行權執(zhí)行。
只有結束的時候有些不同。
前臺線程要通過run方法結束,線程結束。
后臺線程也可以通過run方法結束,線程結束,還有另一種情況,
當進程中所有的前臺線程都結束了,這時無論后臺線程處于什么樣的狀態(tài),都會結束,從而進程會結束。
進程結束依賴的都是前臺線程。

線程優(yōu)先級

線程的優(yōu)先級:用數(shù)字標識的,1-10
其中默認的初始優(yōu)先級時5 最明顯的三個優(yōu)先級 1,5,10。
setPriority(Thread.MAX_PRIORITY);

線程組

線程組:ThreadGroup:可以通過Thread的構造函數(shù)明確新線程對象所屬的線程組。
線程組的好處,可以對多個同組線程,進行統(tǒng)一的操作。
默認都屬于main線程組。

匿名內部類

Runnable rn = new Runnable() {
  public void run() {
  }
};

//上述代碼等價于

class Anomymous implements Runnable {
  public void run() {
  }
}
Runnable rn = new Anomymous();

 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

最新評論