91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SwingWorker()構造器的線程是怎樣的

發布時間:2021-12-24 15:49:26 來源:億速云 閱讀:99 作者:柒染 欄目:編程語言

今天就跟大家聊聊有關SwingWorker()構造器的線程是怎樣的,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

演示程序用SwingWorker()構造器在后臺執行費時的操作,然后更新UI。
這個新的實現還基于DougLea的util.concurrent包的FutureResult類。由于大量依賴了FutureResult所做的工作,SwingWorker類的實現是簡單而靈活的。
本節的余下部分更詳細地描述了實現的細節,請繼續往下看或直接跳到后面下載源碼。
RunnableFutureResult

FutureResult,正如它的名字所暗示的,它是用來保持某動作的結果的。它被設計成和一個Callable共同使用,Callable是一個會返回結果的runnable動作:

publicinterfaceCallable{  Objectcall()throwsException;  }

新的SwingWorker是一個RunnableFutureResult。在運行時,它把結果設成construct()的返回值,然后在事件派發線程中調用finished()方法。(注意:SwingWorker是一個抽象類;你要子類化它并實現construct()和finished()。)
下面的代碼來自SwingWorker的run()方法:

Callablefunction=newCallable(){  publicObjectcall()throwsException{  returnconstruct();  }  };
RunnabledoFinished=newRunnable(){  publicvoidrun(){  finished();  }  };   setter(function).run();  SwingUtilities.invokeLater(doFinished);

***段把construct()轉換成一個Callable動作,第二段把finished()轉換成作為Runnable的doFinished。然后setter(function)被運行,doFinished被調用。
setter(function)

上面缺少的部分是setter(function)。它創建一個刻板的Runnable。在運行時,這個Runnable調用參數指定的function,然后給結果設置返回值。下面是來自FutureResult的代碼:

publicRunnablesetter(finalCallablefunction){  returnnewRunnable(){  publicvoidrun(){  try{  set(function.call());  }  catch(Throwableex){  setException(ex);  }  }  };  }

注意try-catch塊所作的防護。如果construct()拋出任何東西(Exception、Error等等),都會被捕捉并記錄下來。
不要搶跑:先construct,再start

調用start()來啟動worker線程。這是修訂版的SwingWorker和原來版本的一個重要區別。
在原來的版本中,SwingWorker()構造器自動啟動線程,這種做法帶來了一個線程和子類構造器競爭的危險:當SwingWorker()構造器已啟動了線程,而子類的構造器還沒完成。彌補方法是,先構造SwingWorker,然后再調用start()。
順便一提,RemoteTable并不調用start()。正確來說,SwingWorker是作為一個Runnable被QueuedExecutor執行的。

看完上述內容,你們對SwingWorker()構造器的線程是怎樣的有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

开封县| 大厂| 龙川县| 车致| 林芝县| 临沧市| 株洲县| 池州市| 吴桥县| 古丈县| 杂多县| 磐石市| 普兰县| 嘉善县| 博白县| 页游| 娱乐| 昌吉市| 阿合奇县| 杨浦区| 望城县| 松滋市| 万州区| 富蕴县| 林芝县| 南川市| 合肥市| 青龙| 新丰县| 顺义区| 阳朔县| 柘荣县| 北票市| 廉江市| 清水河县| 清涧县| 阿巴嘎旗| 临夏市| 栾城县| 鹤壁市| 绥宁县|