2014-02-28 123 views
-3

我想了解Java中的多線程執行。我想要一個「控制器」類A和「並行執行」類B.從邏輯上講,我希望有一個類A的新對象,在獨立線程中啓動一個類B的新對象。同時運行兩個類

我應該讓B類擴展Thread類,還是有更現在接受的方式來做這件事。下面是一些非常粗糙的僞代碼。

public class A { 
... 
    Class B() // call class B  
... 
} 

public class B extends Thread { 
    public void run(){ 
    //some code 
    } 
} 
+2

你需要兩個線程,閱讀關於java線程 –

+3

'「其實我讀了Java中的線程,並且使用上述相同的邏輯創建了兩個類,但它不適用於我。」 - 獲得更好的答案,請提供更多信息,因爲「不適合我」並不能告訴我們您的問題。請顯示您的代碼不起作用。請只顯示***真實的***代碼,而不是像您上面發佈的那種「種類多樣」的代碼。請解釋它是如何工作的,你可能會看到什麼錯誤,你遇到了什麼錯誤行爲。請記住,細節和準確性*非常重要。 –

+1

您需要閱讀Java入門教程。嘗試Oracle的Java跟蹤。 – ktm5124

回答

1

我沒有你的Class B()是什麼意思。如果你的意思是執行run方法Class B。嘗試下面的內容。

public class A { 

    public static void someMethod(){ 
     B b = new B(); 
     b.start(); 
    } 

    public static void main(String[] args) 
    { 
     someMethod(); 
    } 
} 

public class B extends Thread{ 
    public void run() 
    { 
     //logic comes here 
    } 
} 

但是擴展線程並不總是被建議,因爲您不能擴展多個類。

您可以實現Runnable接口,這允許B擴展任何類並實現其他接口。

public class A { 
    public void someMethod(){ 
     B b = new B(); 
     Thread t = new Thread(b); 
     t.start() 
    } 

    public static void main(String[] args) 
    { 
     someMethod(); 
    } 
} 

//Now below class can extend any other class 
public class B implements Runnable{ 
    public void run() 
    { 
     //logic comes here 
    } 
} 

希望這會有所幫助。

0

你應該執行B這樣的:

B b=new B(); 
b.start(); 

這將執行run方法,並繼續同時運行

+0

請提及一些關於擴展線程與實現Runnable的相對優點。 –

0

創建一個類,你要在一個或多個並行執行的會話中運行其對象的現代化範式是:

  1. 創建類,並讓它實現標記接口Runnable
  2. 創建一個新的通過調用start方法對你的線程從您的Runnable
  3. 啓動新的並行線程的活動

    Runnable myRunnable = new Parallel(arguments); 
    Thread workerThread= new Thread(myRunnable); 
    //now do the work 
    workerThread.start(); 
    

當您有一個實現Runnable的類時,它必須重寫一個方法run()。