2011-06-15 78 views
0

在Java中運行單獨的線程時,我們必須實現Runnable接口或擴展Thread類,因此實際上只有Run()方法才能用於啓動新線程。將自定義方法作爲線程運行

在C#中,我們可以使用 new Thread(target function)調用任何方法作爲新線程運行;

因此,在Java中,我們最終創建了一個單獨的類,以便能夠作爲線程運行。 那麼有沒有辦法避免這種情況?

我想避免體系結構的任何變化,而且方法本身不是很長,它只是兩個耗時的循環。

回答

1

就我的Java知識而言:運行線程的唯一方法是通過任何提供的方式(如所命名的方法)調用run()。

然而,您可以在運行中調用您的方法。那麼你也不會改變你的架構。

2

在java中,一個函數(或者甚至更好的方法)不是一個對象本身,因此你必須創建一個這樣的包裝來執行你想要的。

new Thread() { 
    public void run() { 
     originalMethod(); 
    } 
}.start(); 
3

雖然不完美,但您可以使用匿名內部類來包裝您的函數。要執行的代碼在一個單獨的線程的功能會是這個樣子:

Thread t = new Thread() { 
    public void run() 
    { 
     myMethodHere(); 
    } 

}; 

t.start(); 
1

您可以創建一個使用一個輔助的方法反射來實現,

backgroundMethod("methodName"); 

backgroundMethod(object, "methodName"); 

除非這是你經常做的事,使用其他人建議的Runnable可能會更好/更清晰。