我试图在 Java 的 for
循环中创建新线程,但在前一个线程运行完毕之前,新线程不会启动。如何让它们全部启动而不等待上一个?
这是我用来启动线程的代码:
Thread[] threads = new Thread[processors];
for(int i = 1; i <= processors; i++)
{
threads[i] = new Thread();
threads[i].doSomeWork();
threads[i].run();
}
最佳答案
调用new Thread
实际上并不创建新线程。它只是创建一个 Thread 对象。您必须在线程上调用start()
。但这还不够。您还必须告诉线程
要做什么。
有两种方法告诉线程
要做什么:
threads[i] = new Thread() {
@Override public void run() {
doSomeWork();
}
};
threads[i].start();
或者
threads[i] = new Thread(new Runnable() {
@Override public void run() {
doSomeWork();
}
});
threads[i].start();
关于Java - for 循环中的线程在前一个线程完成之前不会创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20162035/