Java - for 循环中的线程在前一个线程完成之前不会创建

标签 java multithreading

我试图在 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/

相关文章:

java - JPA/EclipseLink 和向后兼容的枚举映射

c++ - 传递字符串作为线程启动例程参数 : C++

java - Servlet REST API 和线程数据交换

java - 用 Java 绘制 X-Y 图

java - 一个读取所有英国日期格式的 Java 日期解析器

java - 在注释处理期间如何从方法获取其参数的注释?

c++ - 多线程队列原子操作

java - 无法在Java中打印出集合

c# - 获取锁并进一步尝试锁定不会阻止 : are C# locks re-entrant?

c# - 线程监控 Queue<Actions>