簡體   English   中英

在Java中運行執行不同工作的多個線程的正確方法是什么?

[英]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());
    }


}

不要在實現ThreadRunnable的類中放置main方法。 可以使用當前的Server實現來實現所需的功能,但是我認為這樣做沒有充分的理由。 分離出關注點,然后KISS:

  • 一個無聊的簡單類,帶有public static void main(String[] args)方法
  • 一台Server implements Runnable類(一種線程)
  • 一種Calculations implements Runnable類(另一種線程)

具有main方法的類將啟動ServerCalculations線程。

使用Executors.newSingleThreadExecutor()創建一個包含單個線程的線程池。 Callable對象提交給此Executor ,每個實例將在其中執行您的計算之一。 返回一個Future對象,該對象可用於獲取計算結果。 計算本身將在執行程序管理的線程中運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM