国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java線程簡介(其它線程API詳細信息)

2019-11-18 10:47:05
字體:
來源:轉載
供稿:網友

  1、wait()、notify() 和 notifyAll() 方法
  
  
  除了使用輪詢(它可能消耗大量 CPU 資源,而且具有計時不精確的特征),Object 類還包括一些方法,可以讓線程相互通知事件的發生。
  
  Object 類定義了 wait()、notify() 和 notifyAll() 方法。要執行這些方法,必須擁有相關對象的鎖。
  
  Wait() 會讓調用線程休眠,直到用 Thread.interrupt() 中斷它、過了指定的時間、或者另一個線程用 notify() 或 notifyAll() 喚醒它。
  
  當對某個對象調用 notify() 時,假如有任何線程正在通過 wait() 等待該對象,那么就會喚醒其中一個線程。當對某個對象調用 notifyAll() 時,會喚醒所有正在等待該對象的線程。
  
  這些方法是更復雜的鎖定、排隊和并發性代碼的構件。但是,notify() 和 notifyAll() 的使用很復雜。尤其是,使用 notify() 來代替 notifyAll() 是有風險的。除非您確實知道正在做什么,否則就使用 notifyAll()。
  
  與其使用 wait() 和 notify() 來編寫您自己的調度程序、線程池、隊列和鎖,倒不如使用 util.concurrent 包(請參閱參考資料),這是一個被廣泛使用的開放源碼工具箱,里面都是有用的并發性實用程序。JDK 1.5 將包括 java.util.concurrent 包;它的許多類都派生自 util.concurrent。
  
  2、線程優先級
  
  
  Thread API 讓您可以將執行優先級與每個線程關聯起來。但是,這些優先級如何映射到底層操作系統調度程序取決于實現。在某些實現中,多個 — 甚至全部 — 優先級可能被映射成相同的底層操作系統優先級。
  
  在碰到諸如死鎖、資源匱乏或其它意外的調度特征問題時,許多人都想要調整線程優先級。但是,通常這樣只會把問題移到別的地方。大多數程序應該完全避免更改線程優先級。
  
  3、線程組
  
  
  ThreadGroup 類原本旨在用于把線程集合構造成組。但是,結果證實 ThreadGroup 并沒有那樣有用。您最好只使用 Thread 中的等價方法。
  
  ThreadGroup 確實提供了一個有用的功能部件(Thread 中目前還沒有):uncaughtException() 方法。線程組中的某個線程由于拋出了未捕捉的異常而退出時,會調用 ThreadGroup.uncaughtException() 方法。這就讓您有機會關閉系統、將一條消息寫到日志文件或者重新啟動失敗的服務。
  
  4、SwingUtilities
  
  
  雖然 SwingUtilities 類不是 Thread API 的一部分,但還是值得簡單提一下。
  
  正如前面提到的,Swing 應用程序有一個 UI 線程(有時叫稱為事件線程),所有 UI 活動都必須在這個線程中發生。有時,另一個線程也許想要更新屏幕上某樣東西的外觀,或者觸發 Swing 對象上的一個事件。
  
  SwingUtilities.invokeLater() 方法可以讓您將 Runnable 對象傳送給它,并且在事件線程中執行指定的 Runnable。它的同類 invokeAndWait() 會在事件線程中調用 Runnable,但 invokeAndWait() 會阻塞,直到 Runnable 完成執行之后。
  
  
  void showHelloThereDialog() throws Exception {
   Runnable showModalDialog = new Runnable() {
   public void run() {
   JOptionPane.showMessageDialog(myMainFrame, "Hello There");
   }
   };
   SwingUtilities.invokeLater(showModalDialog);
  }
  
  
  對于 AWT 應用程序,java.awt.EventQueue 還提供了 invokeLater() 和 invokeAndWait()。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海丰县| 黑山县| 五华县| 铁岭市| 莒南县| 扶风县| 乌拉特前旗| 桦南县| 壤塘县| 岢岚县| 宁乡县| 陵水| 东兴市| 张北县| 蓝山县| 休宁县| 华池县| 石嘴山市| 金秀| 巴楚县| 武清区| 康马县| 浙江省| 房产| 漳平市| 视频| 邵武市| 威信县| 壤塘县| 德惠市| 新河县| 沂水县| 乐东| 石首市| 柏乡县| 柞水县| 仁怀市| 张北县| 丁青县| 双牌县| 青浦区|