通过传递Runnable的相同实例来创建两个线程

时间:2012-05-11 12:43:59

标签: java multithreading

Thread runnableInst = new Runnable(){  public void run(){}};

Thread thread1 = new Thread(runnableInst);
Thread thread2 = new Thread(runnableInst);

thread1.start();
thread2.start();

在同一个Object runnableInst上启动两个线程可以吗?

进行这种设计是否合适?

4 个答案:

答案 0 :(得分:2)

是的,您可以这样做,但有一点需要注意的是,两个线程都将访问runnableInst的实例数据。因此,您必须确保在必要时同步访问。

答案 1 :(得分:1)

这样做没有问题。但是,如果您计划分派大量并行任务,则可能需要开始使用ExecutorService API。

答案 2 :(得分:0)

确实有可能。在大多数情况下,我不认为这是好的或好的设计。我喜欢将Runnable实例视为一段孤立的代码,它只通过定义明确,安全的方式与其他线程共享数据。

答案 3 :(得分:0)

可以在同一个Object runnableInst上启动两个线程吗?

是的,可以在同一个Object runnableInst上启动两个线程。

进行这种设计是否合适 - 这取决于用例。例如,如果没有与共享资源上的读/写相关的内容,那么这是一个很好的设计。