繁体   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