成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SwingWorker單線程規則

開發 后端
本文介紹SwingWorker單線程規則,以及許多程序都不需要后臺線程,后臺線程在執行費時的操作時仍然是很有用的,它能提高程序的性能觀感。

SwingAPI的設計目標是強大、靈活和易用。非凡地,我們希望能讓程序員們方便地建立新的Swing組件,不論是從頭開始還是通過擴展我們所提供的一些組件。出于這個目的,我們不要求Swing組件支持多線程訪問。相反,我們向組件發送請求并在單一線程中執行請求。本文討論線程和Swing組件。目的不僅是為了幫助你以線程安全的方式使用SwingAPI,而且解釋了我們為什么會選擇現在這樣的線程方案。本文包括以下內容:

單線程規則:SwingWorker單線程在同一時刻僅能被一個線程所訪問。一般來說,這個線程是事件派發線程。規則的例外:有些操作保證是線程安全的。事件分發:假如你需要從事件處理或繪制代碼以外的地方訪問UI,那么你可以使用SwingUtilities 類的invokeLater要求在事件派發線程中執行某些代碼。這個方法會立即返回,不會等待代碼執行完畢。invokeAndWait行為與 invokeLater類似,除了這個方法會等待代碼執行完畢。一般地,你可以用invokeLater來代替這個方法。下面是一些使用這幾個API的例子。請同時參閱《TheJavaTutorial》中的“BINGOexample”,尤其是以下幾個類:CardWindow、ControlPane、Player和OverallStatusPane。

使用invokeLater方法你可以從任何線程調用invokeLater方法以請求事件派發線程運行特定代碼。你必須把要運行的代碼放到一個 Runnable對象的run方法中,并將此Runnable對象設為invokeLater的參數。invokeLater方法會立即返回,不等待事件派發線程執行指定代碼。這是一個使用invokeLater方法的例子:

  1. RunnabledoWorkRunnable=newRunnable 

SwingUtilities.invokeLater; 使用invokeAndWait方法invokeAndWait方法和invokeLater方法很相似,除了invokeAndWait方法會等事件派發線程執行了指定代碼才返回。在可能的情況下,你應該盡量用invokeLater來代替invokeAndWait。假如你真的要使用 invokeAndWait,請確保調用invokeAndWait的線程不會在調用期間持有任何其他線程可能需要的鎖。

這是一個使用invokeAndWait的例子:

  1. voidshowHelloThereDialogthrowsException  
  2. }  
  3. SwingUtilities.invokeAndWait;  

類似地,假設一個線程需要對GUI的狀態進行存取,比如文本域的內容,它的代碼可能類似這樣:

  1. voidprintTextField  
  2. throwsException  
  3. }  
  4. SwingUtilities.invokeAndWait  
  5. System.out.println  

假如你能避免使用線程,最好這樣做。線程可能難于使用,并使得程序的debug更困難。一般來說,對于嚴格意義下的GUI工作,線程是不必要的,比如對組件屬性的更新。不管怎么說,有時候線程是必要的。下列情況是使用線程的一些典型情況:執行一項費時的任務而不必將事件派發線程鎖定。例子包括執行大量計算的情況,會導致大量類被裝載的情況,和為網絡或磁盤I/O而阻塞的情況。重復地執行一項操作,通常在兩次操作間間隔一個預定的時間周期。要等待來自客戶的消息。你可以使用兩個類來幫助你實現線程:SwingWorker:創建一個后臺線程來執行費時的操作。Timer:創建一個線程來執行或多次執行某些代碼,在兩次執行間間隔用戶定義的延遲。使用SwingWorker單線程在SwingWorker.java中實現,這個類并不包含在Java的任何發行版中,所以你必須單獨下載它。SwingWorker單線程做了所有實現一個后臺線程所需的骯臟工作。雖然許多程序都不需要后臺線程,后臺線程在執行費時的操作時仍然是很有用的,它能提高程序的性能觀感。

【編輯推薦】

  1. 動態語言是否將會挽救Swing
  2. 用TableModel框架簡化Swing開發
  3. Swing模型過濾技術詳解
  4. Java Swing開發的一些熱點
  5. 使用Swing動態界面設計技術透析
責任編輯:佚名 來源: 中國IT實驗室
相關推薦

2025-06-17 00:22:00

2020-11-09 09:33:37

多線程

2010-08-30 08:55:56

JavaScript引

2022-01-04 11:11:32

Redis單線程Reactor

2009-04-30 09:10:42

JavaSwing線程安全

2010-01-28 16:45:44

Android單線程模

2017-03-06 14:08:38

JavaScript單線程setTimeout

2025-04-24 08:15:00

Redis單線程線程

2024-02-26 00:00:00

JavaScript單線程高效

2019-11-25 10:13:52

Redis單線程I

2024-09-27 11:51:33

Redis多線程單線程

2012-02-15 10:26:40

JavaJava Socket

2009-07-17 17:41:41

SwingWorker

2019-06-17 14:20:51

Redis數據庫Java

2023-08-17 14:12:17

2023-10-15 12:23:10

單線程Redis

2021-01-10 11:21:33

JavaScript語言開發

2020-10-30 16:20:38

Redis單線程高并發

2020-06-11 09:35:39

Redis單線程Java

2021-06-11 11:28:22

多線程fork單線程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲日韩欧美一区二区在线 | 亚洲不卡一 | 亚洲精品日韩在线观看 | 日本欧美在线视频 | 国产精品久久久久久久久久免费看 | 欧美成人h版在线观看 | 精品久久久久久久 | 亚洲黄色一区二区三区 | h视频在线观看免费 | 日本久久精品视频 | 天天干天天操天天射 | 久久99精品久久久久久国产越南 | 精品一区二区免费视频 | 国产日韩欧美 | 国产在线精品一区二区三区 | 中文字幕日韩欧美一区二区三区 | 夜夜爽99久久国产综合精品女不卡 | 午夜视频在线播放 | 日日爽| 欧美一级黄带 | 亚洲 中文 欧美 | 国产精品爱久久久久久久 | 久久出精品 | 亚洲午夜av久久乱码 | 天天干夜夜拍 | 午夜视频免费在线观看 | 国产精品久久久乱弄 | 亚洲国产69 | 欧美日韩一二三区 | 涩爱av一区二区三区 | 久久国产精品99久久久久久丝袜 | 欧美精品成人一区二区三区四区 | 久久一区二区免费视频 | 中文av电影 | 日韩免费一区二区 | 在线观看国产网站 | 青青草视频网 | 日韩一区二区福利 | 成人h视频在线 | 一级毛片视频在线 | 麻豆国产精品777777在线 |