【发布时间】:2011-05-09 12:25:26
【问题描述】:
我的一个 Java 程序存在以下问题。 我正在尝试根据我的主程序在文件系统上找到的内容启动多个线程。 它的工作方式非常经典: - 第一个循环:实例化,存储在本地数组中并启动一个新线程 - 第二个循环:使用 '.join()' 方法等待所有线程
在执行时,我在 '.join()' 上得到一个 NullPointerException。此异常由启动的第 3 个线程引发(因为它在第 2 个线程之前完成)
这是我的代码示例:
PackageManager[] myRootManagers = new PackageManager[myCCDirs.size()];
int i = 0;
for (PkgDescriptor descriptor : myCCDirs) {
...
// --- instantiate new ROOT manager
myRootManagers[i] = new PackageManager(getConfig(), loggerPac, descriptor);
// --- start it
myRootManagers[i].start();
}
for (PackageManager packageManager : myRootManagers) {
try {
packageManager.join();
}
catch (InterruptedException e) {
loggerPac.error("...");
}
}
有人知道为什么会出现这个异常吗?
【问题讨论】:
-
我看不到您如何/何时设置
i。那是怎么回事? -
嗨,鲍比,你是对的。当然我有一个变量'i',但我刚刚看到它在我的第一个循环中没有增加。因此,我在第二个期间得到了空指针异常。谢谢你的评论:)
标签: java multithreading