运行在java中执行不同作业的多个线程的正确方法是什么?

时间:2011-07-29 20:20:49

标签: java multithreading

我正在尝试用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());
    }


}

2 个答案:

答案 0 :(得分:6)

不要在实现mainThread的类中放置Runnable方法。您可以实现您当前Server实施所需的功能,但我认为没有充分的理由这样做。将问题分开,KISS:

  • 一个使用public static void main(String[] args)方法
  • 的无聊,简单的课程
  • 一个Server implements Runnable类(一种线程)
  • 一个Calculations implements Runnable类(另一种类型的线程)

使用main方法的类会启动ServerCalculations个帖子。

答案 1 :(得分:0)

使用Executors.newSingleThreadExecutor()创建包含单个线程的线程池。将Callable个对象提交到此Executor,其中每个实例都将执行您的一项计算。返回Future对象,可用于获取计算结果。计算本身将在Executor管理的线程中运行。