1

是否不希望创建超过 10 个额外的线程?例子:

for(int i=0; i<100; i++) {
    new Thread() {
        public void run() {
            // something
        }
    }.start();
}

这将创建并启动 100 个线程。这不好,对吧?

更新 > 每个线程都在下载一些东西并将其放入包中

4

4 回答 4

6

创建比您需要的更多的线程是不可取的。

当然,如果您需要 100 个线程,那么这是一个很好的创建数字。

不知道你从哪里来it is undesirable to create more than 10 additional threads。Java 进程可以处理 10,000 个线程。

于 2012-08-06T13:40:03.087 回答
2

如果您使用 10 个线程的线程池并将它们传递给正确的 Runnable,它将更加容易和快捷。

于 2012-08-06T13:39:44.507 回答
1

完全取决于上下文。如果您所做的大部分工作都受 CPU 限制,那么除非您实际上有 100 个内核,否则可能不会产生太大影响或实际上使事情变得更糟(上下文切换等)。如果大量时间花在 I/O 任务上,那么线程可能是有益的。你真的需要做一些基准测试。

于 2012-08-06T13:39:13.723 回答
1

您可能想要的是一个ThreadPool,而不是创建这么多线程。

例如:

 ExecutorService executor = Executors.newFixedThreadPool(4);
 executor.submit(YourRunnable);

多看看线程池——它们会让你的生活更轻松。

于 2012-08-06T15:00:15.537 回答