【发布时间】:2017-08-30 07:34:27
【问题描述】:
我在 java 中有一个长度为 24 的线程数组。 我想运行它们,但如果我运行它们中的两个以上,我的计算机将被关闭。 我怎么能每时每刻只运行其中两个? 这是我写的,但它不起作用(运行此代码后我的计算机关闭了):
File[] files = file.listFiles();
Thread[] threads = new Thread[files.length];
for (int i = 0; i < files.length; i++) {
File a = files[i];
threads[i] = new Thread(new Runnable() {
@Override
public void run() {
Function(a.toString());
}
});
}
Thread a = null,b = null;
int i = 0;
while (i < files.length) {
if (!a.isAlive()) {
a = threads[i];
a.start();
i++;
}
if (!b.isAlive()) {
b = threads[i];
b.start();
i++;
}
}
【问题讨论】:
-
您的计算机在尝试运行 3 个线程时关闭?这很奇怪......
-
看起来它甚至在启动第一个线程之前就会与 NPE 一起崩溃。
-
电脑关机?你确定吗?
-
除了尝试只运行两个线程的奇怪原因。只需使用更高级别的AP Ilike docs.oracle.com/javase/7/docs/api/java/util/concurrent/…
-
线程是你需要的错误抽象。您需要一个固定大小的线程池(例如 Executors 类提供的),您可以向其中提供 Runnables。 ExecutorService 是要走的路。
标签: java multithreading