提问人:kaptrow 提问时间:7/16/2019 更新时间:7/16/2019 访问量:236
使用 thread.join() 时抛出 NullPointerException [duplicate]
NullPointerException is thrown when thread.join() is used [duplicate]
问:
我创建了一个用于矩阵乘法的类,它实现了 Runnable 接口。它有一个线程数组,这些线程都已初始化,并且为了确保在返回矩阵之前完成所有计算,我对相同的线程数组使用了 for each 循环,并且在尝试加入第一个线程时立即触发了 NullpointerException。线程对象在完成该过程后会变成 null 吗?
我添加了一个 if 子句来检查线程是否为 null,它解决了问题,但我没有发现任何迹象表明线程对象在完成后变为 null。
Thread[] threads = new Thread[amountOfThreads];
for (Thread thread : threads) {
thread = new Thread(this);
thread.start();
}
for (Thread thread : threads) {
thread.join();
}
答:
0赞
Hossein Nasr
7/16/2019
#1
您需要将创建的线程添加到数组中。喜欢这个
Thread[] threads = new Thread[amountOfThreads];
int i=0;
for (Thread thread : threads) {
thread = new Thread(this);
thread.start();
threads[i++] = thread;
}
for (Thread thread : threads) {
thread.join();
}
评论
thread = new Thread(this)
null