2016-09-23 18 views
0

我編碼在SWT GUI應用程序和我有代碼看起來像這樣:如何優化的Java多線程代碼(SWT)

button.addSelectionListener(new SelectionAdapter() { 
     @Override 
     public void widgetSelected(final SelectionEvent e) { 

     ... lot of variable initialization from text fields etc. 

      new Thread(new Runnable() { 
       @Override 
       public void run() { 

       ... more than 400 lines of code 

       display.asyncExec() everywhere ... 

     }).start(); 
    } 
} 

是否有某種方式來優化這種代碼? 我想將線程移到自己的類中,但是,如何獲得所有組件值而沒有麻煩?

+1

這是不是一個真正的關於多線程的,用戶界面的,有關優化,或者約SWT的問題。你真正要問的是,我有這麼大的課,我想分成小班,我該怎麼做?換句話說,我該如何_refactor_代碼?有關於此的整本書。很難給出一個適合這個論壇的答案。 –

+0

同意詹姆斯,但我不知道如何「創造」一個很好的問題! 我仍然認爲我的問題是關注於一個特定主題。 – LppEdd

回答

1

使嵌套類在類的結尾:

public class Someclass{ 
    //main code here 

    class Nestedclass implements Runnable{ 
     //thread code here 
    } 
} 

這樣的代碼將被devided兩個部分,更易於閱讀,並嵌套類仍然可以訪問所有的全局變量。

+0

非常感謝!我喜歡這種方式,但仍然是一個不同的.java源文件將是我的首選選項! – LppEdd

+1

以獲得不同的.java源文件,首先提供您的初始變體。您插入的代碼不能編譯。 –

+1

Eclipse IDE有選項Refactor->將匿名類轉換爲嵌套。我相信其他IDE具有類似的功能。這樣您就可以將兩個擴展轉換爲Runnable以及SelectionEvent的擴展。 –