美好的一天,为了同时运行多个线程,建议从一个类创建不同的线程对象,或者创建两个类,其中一个实现runnable,一个扩展一个线程,然后根据需要创建两个线程对象,假设我们是试图同时运行7-10个任务。
谢谢。提示一如既往地受到赞赏。
答案 0 :(得分:20)
java.util.concurrent
包这是一个简短的例子:
private static class SomeTask implements Runnable
{
@Override
public void run()
{
doSomething();
}
}
public static void main(String[] args)
{
ExecutorService executor = Executors.newCachedThreadPool();
for (int i = 0; i < 8; i++) executor.execute(new SomeTask());
}
答案 1 :(得分:3)
我个人会选择选项(1)(创建同一类的2个不同的线程)。
我觉得不需要为同一个类的2个不同线程创建2个不同的类。
答案 2 :(得分:3)
我认为你做这件事的方式并不重要。如果您将拥有大量短期线程,您可能需要一个线程池,请参阅java.util.concurrent.Executors。通常我会创建一个类型为runnable的匿名类,例如
executor.execute(new Runnable() {
//thread code goes here
});
答案 3 :(得分:2)
通过扩展Thread或通过实现Runnable并使用new Thread(runnable)
创建线程之间的性能差别不大。无论是使用一个类还是几个类都无关紧要。你应该根据要完成的工作来设计你的班级结构;如果两个线程对不同的数据进行相同的工作,则对两者使用相同的类。
访问共享数据(无论是静态类变量还是其他内容)始终是一个大问题。
答案 4 :(得分:0)
产生差异的主要因素是您如何设计对象层次结构: 如果扩展Thread类,则不能扩展任何其他类(Java是单继承)。因此,通过实现Runnable,您仍然可以扩展域模型中的其他类。