是否不希望创建超过 10 个额外的线程?例子:
for(int i=0; i<100; i++) {
new Thread() {
public void run() {
// something
}
}.start();
}
这将创建并启动 100 个线程。这不好,对吧?
更新 > 每个线程都在下载一些东西并将其放入包中
是否不希望创建超过 10 个额外的线程?例子:
for(int i=0; i<100; i++) {
new Thread() {
public void run() {
// something
}
}.start();
}
这将创建并启动 100 个线程。这不好,对吧?
更新 > 每个线程都在下载一些东西并将其放入包中
创建比您需要的更多的线程是不可取的。
当然,如果您需要 100 个线程,那么这是一个很好的创建数字。
不知道你从哪里来it is undesirable to create more than 10 additional threads
。Java 进程可以处理 10,000 个线程。
如果您使用 10 个线程的线程池并将它们传递给正确的 Runnable,它将更加容易和快捷。
完全取决于上下文。如果您所做的大部分工作都受 CPU 限制,那么除非您实际上有 100 个内核,否则可能不会产生太大影响或实际上使事情变得更糟(上下文切换等)。如果大量时间花在 I/O 任务上,那么线程可能是有益的。你真的需要做一些基准测试。
您可能想要的是一个ThreadPool,而不是创建这么多线程。
例如:
ExecutorService executor = Executors.newFixedThreadPool(4);
executor.submit(YourRunnable);
多看看线程池——它们会让你的生活更轻松。