2015-12-18 58 views
0

內多個線程我用java的SwingWorker用java SwingWorker的後臺線程

protected static class BackgroundTask extends SwingWorker<Void, Void> { 
@Override 
protected Void doInBackground() { 
    //while (!isCancelled()) { 
    Build_JobParams.runJob(); 
    //} 
    return null; 
} 

現在運行的作業作爲後臺進程,我需要多次調用(異步)使用不同的參數後臺進程。由於它是後臺進程,第二個調用覆蓋第一個調用參數。我嘗試過的一種方法是使用多線程,如線程t1 =新線程(){...但它間歇性地拋出異常。

有什麼更好的建議。請注意,我不能等待done(){..方法來調用第二個調用,因爲我有很多調用並且不確定最初的調用次數。請建議是否有一些好的方法。

+0

ExecutorService更適合這種情況 – Jerry06

回答

1

您可以使用具有固定大小線程池的ExecutorService。你可以找到關於如何設置正確的池大小here

這裏更多的信息,可以嘗試什麼:

  1. 創建執行服務:

ExecutorService的服務= Executors.newFixedThreadPool(5) //將任意值設置爲5

  1. 通過實現可調用接口創建可調用對象

  2. 在調用方法中調用Build_JobParams.runJob()。

  3. service.submit(/ **提交實例的 「通知」 在這裏** /)

如果Build_JobParams.runJob()不返回任何值,也可以撥打 service.execute但在這種情況下,您需要創建一個Runnable。

希望這有助於!

+0

感謝您的幫助@akki – Affi