[英]What is a correct way to run multiple threads that do different jobs in java?
我正在嘗試用Java構建與網絡相關的程序。 我以前有C的經驗。在C中,當您運行線程時,可以定義希望它作為線程運行的方法。
但是,在Java中,線程似乎總是使用方法run()
運行,並且每個類中可以有1個名稱相同的方法。
我希望至少有2個線程,一個用於計算的線程,一個用於與其他應用程序通信的線程。 (即使這可以用1個線程完成,我只想知道運行兩個完全不同的工作的2個線程的正確方法是什么)
以下是我如何實現線程的示例代碼。 如果下面的代碼生成的線程進行通信,那么創建另一個進行計算的線程的一種好方法是什么?
public class Server implements Runnable{
static Thread myThread;
public void run() {
// TODO Auto-generated method stub
}
public static void main(String[] args) {
myThread = new Thread(new Server());
}
}
不要在實現Thread
或Runnable
的類中放置main
方法。 您可以使用當前的Server
實現來實現所需的功能,但是我認為這樣做沒有充分的理由。 分離出關注點,然后KISS:
public static void main(String[] args)
方法 Server implements Runnable
類(一種線程) Calculations implements Runnable
類(另一種線程) 具有main
方法的類將啟動Server
和Calculations
線程。
使用Executors.newSingleThreadExecutor()
創建一個包含單個線程的線程池。 將Callable
對象提交給此Executor
,每個實例將在其中執行您的計算之一。 返回一個Future
對象,該對象可用於獲取計算結果。 計算本身將在執行程序管理的線程中運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.