我正在尝试用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());
}
}
答案 0 :(得分:6)
不要在实现main
或Thread
的类中放置Runnable
方法。您可以实现您当前Server
实施所需的功能,但我认为没有充分的理由这样做。将问题分开,KISS:
public static void main(String[] args)
方法Server implements Runnable
类(一种线程)Calculations implements Runnable
类(另一种类型的线程)使用main
方法的类会启动Server
和Calculations
个帖子。
答案 1 :(得分:0)
使用Executors.newSingleThreadExecutor()
创建包含单个线程的线程池。将Callable
个对象提交到此Executor
,其中每个实例都将执行您的一项计算。返回Future
对象,可用于获取计算结果。计算本身将在Executor管理的线程中运行。