我怎样才能摆脱这个问题。如何创建多个线程对象?
public void filterControl (int threadCount) {
this.rowCount = img.getHeight() / threadCount;
Thread[] t = null;
for (int i=0; i<threadCount; i++) {
t[i] = new Thread(new Runnable(){ //there is a NullPointerException
@Override
public void run() {
filtering(startRow, rowCount);
}
});
t[i].run();
}
}
答案 0 :(得分:2)
您的NullPointerException
来自于您将数组初始化为null
这一事实。
将其初始化为:
Thread[] t = new Thread[threadCount];
这会将其所有元素初始化为null
(Object
s的默认值),但数组本身为非null
实例,总计为{{1元素槽。
注意强>
您不能通过调用threadCount
来启动Thread
,run
将在调用线程中执行run
方法。
改为使用t[i].start();
。
答案 1 :(得分:0)
在尝试使用&#34;数组&#34;。
之前创建一个数组尝试替换
Thread[] t = null;
到
Thread[] t = new Thread[threadCount];