2014-04-02 51 views
0

我正在一個項目中,我有多個接口和兩個實現類需要實現這兩個接口。如何使用多線程並行運行兩個實現類?

假設我的第一個界面 -

public Interface interfaceA { 
    public void abc() throws Exception; 
} 

而且它的實現 -

public class TestA implements interfaceA { 

    // abc method 
} 

我打電話像這樣 -

TestA testA = new TestA(); 
testA.abc(); 

現在我的第二個接口 -

public Interface interfaceB { 
    public void xyz() throws Exception; 
} 

而且它的實現 -

public class TestB implements interfaceB { 

    // xyz method 
} 

我這樣叫它 -

TestB testB = new TestB(); 
testB.xyz(); 

問題陳述: -

現在我的問題是 - 有什麼辦法,我可以並行執行這兩個實現類嗎?我不想連續運行它。

含義,我想運行TestATestB並行執行?這可能嗎?最初我想到使用Callable,但Callable需要返回類型,但我的接口方法是無效的,所以不知道如何才能並行運行這兩個。

+0

是的,這是可能的,但爲什麼要?比順序運行它要複雜得多。 – chrylis

+0

我明白了..在我的情況下,abc和xyz兩種方法都寫入不同的數據庫。所以我需要並行而不是順序編寫。 – AKIWEB

+0

重複[如何使用多線程並行運行兩個類?](http://stackoverflow.com/questions/22755151/how-to-run-two-classes-in-parallel-using-multithreading/22755430#22755430)你已經問過。你最後一個問題沒有答案嗎? – Braj

回答

0
Thread thread1 = new Thread(new Runnable() { 
    public void run() { 
     TestB testB = new TestB(); 
     testB.xyz(); 
    } 
}); 
Thread thread2 = new Thread(new Runnable() { 
    public void run() { 
     TestA testA = new TestA(); 
     testA.abc(); 
    } 
}); 

thread1.start(); 
thread2.start(); 

另一種方式 - 如果你有很多的可運行

ExecutorService service = Executors.newFixedThreadPool(10); 
for (int i = 0; i < 10; i++) { 
    service.submit(new Runnable() { 
     public void run() { 

     } 
    }); 
} 
+0

謝謝,這有助於很多。在我的例子中,我有大約7-8個實現,而不是當前的例子,我只有2個。在這種情況下,我是否需要繼續爲此創建新的'thread'?如果我比'8-9'多,它看起來不是很長的代碼嗎?或者還有其他的方式嗎? – AKIWEB

+0

我更新了我的答案 – zella

+0

謝謝。在內部運行的方法中,我將TestA和TestB的調用權對吧?如果我有兩個以上的人,我可以爲他們做同樣的事情嗎?> – AKIWEB

相關問題