2011-08-29 44 views
0

我一直在java中做一個threadmanager類,並希望它可以輸入一個類,它會運行該類中的threadrun方法,但是當我編寫代碼時,我的ide說:找不到符號threadrun是否有任何線程管理器java

代碼:

package thenetwork; 

/** 
* 
* @author Jman 
*/ 
public class Threadmanager implements Runnable 
{ 
    Class clas; 
    Object parameter1 = null; 
    public Threadmanager(Class classobj) 
    { 
     clas = classobj; 
    } 
    public Threadmanager(Class classobj, Object param1) 
    { 
     clas = classobj; 
     parameter1 = param1; 
    } 
    public void run() { 
     if(parameter1 != null) 
     { 
      clas.threadrun(parameter1); 
     } 
     else 
     { 
      clas.threadrun(); 
     } 
    } 

} 

如果這是不明確的評論它,我將編輯我的帖子 編輯:我需要這個類能夠運行多種類型的其他類

+1

您的問題主體與您的問題標題衝突,所以我只會回答問題標題,並讓其他人回答問題主體中提到的普通編譯錯誤:檢查['java.util.concurrent' API](http ://download.oracle.com/javase/6/docs/api/java/util/concurrent/package-summary.html)([tutorial here](http://download.oracle.com/javase/tutorial/essential) /concurrency/index.html)) – BalusC

+1

java.until.Class沒有threadrun方法。我會建議你看看java.util。併發,因爲BalusC推薦 – Perception

回答

1

Threadrun ISN的不是的功能。

2

java.lang.Class沒有一個名爲threadrun的方法。

2

我不明白你想要的這個「線程管理器」類的事,但你的信息,這是你在Java中啓動一個線程的方式:

Thread th = new Thread(runnable); 
th.start(); 

這將創建和啓動一個新線程,線程將執行作爲參數提供的Runnable的代碼。

Runnable接口並不直接提供一種方法來傳遞參數到run()方法,但可以實現通過實施其它方法,實施構造或通過編碼run方法相同的效果,以從一個封閉檢索值範圍(如果它作爲一個內部類實現的...)


要回答的問題的標題表達了一個問題:是Java並具有標準的線程管理,並也有實現這個第三方庫之類的事情。我建議你閱讀@BalusC鏈接到的教程,並且不要嘗試實現你自己的線程管理器/線程池。

+0

我知道如何運行一個線程,我只想創建一個類,當給定輸入時,它可以運行其他類的方法 – Javaman

+0

@Javaman - 正如我所說,最好的選擇是使用現有的線程管理器。線程不會直接運行其他類的方法。你需要實現一個'Runnable'來做到這一點。 –

1

對於你的類參數,你錯過了一個newInstance()的調用。如果您嘗試直接引用類對象,則只能使用類型爲Class的可用方法,而不能使用對象表示的類的類型。您的類可能應該是這個樣子(我已經離開了參數邏輯):

public class Threadmanager implements Runnable { 
    MyThreadRunObject object; 

    public Threadmanager(Class classobj) { 
    object = (MyThreadRunObject) classobj.newInstance(); 
    } 
    ... 
    public void run() { 
    object.threadrun(); 
    } 
} 

此外,如果您使用的是Java 1.5+,我想你的泛型化類的說法。對它進行基因化的好處在於,您可以執行有界的泛型類型T extends ThreadRunnable並將您的線程運行方法放入界面中,從而允許您限制類將作爲類參數採用的類型。

+0

這會起作用,但如果我有很多課程需要使用100 – Javaman

2

有更低層次的結構,例如Thread,您可以使用,但我建議從ExecutorService開始。它以安全可靠的方式處理最常見的線程需求。

+1

+1作爲ExecutorService,那該怎麼辦。不要推出自己的。 Java併發實用程序非常棒。使用它們。 –

相關問題