[英]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.