我建议使用另一层抽象层,使用ExecutorService
。
下面是一个简单的示例:
public static void main(String args[]) throws InterruptedException {
final ExecutorService service = Executors.newCachedThreadPool();
final class MyTask implements Runnable {
@Override
public void run() {
System.out.println("Running my task.");
}
};
for (int i = 0; i < 10; ++i) {
service.submit(new MyTask());
}
service.shutdown();
service.awaitTermination(1, TimeUnit.DAYS);
}
Runnable myTask = new Runnable() {
public void run() {
// Do some task
}
}
Thread t1 = new Thread(myTask);
t1.start();
t1.join();
Thread t2 = new Thread(myTask);
t2.start();
ExecutorService
类提供的机制,它将以一种避免线程终止的方式管理实际线程。)Java中的Thread
不能被重复运行。一旦它启动并完成工作,就无法再次启动(调用方法start
将失败)。因此,您将不得不创建一个新的Thread
实例(使用相同的Runnable
)并启动它。
Runnable
,并不关心它是否与其他线程相同,因为每个线程都有它自己的私有堆栈。例如,请查看此示例。 - user2511414