Java 我的业余基准测试程序上的NullPointerException
上面的代码是我在一个简单的基准测试程序中的尝试,该程序试图利用计算机CPU上的所有可用内核,只需使用5秒钟内可能计数的所有线程。 代码在t.start行上给出了一个NullPointerException,我认为这是因为我试图解决无法动态命名变量的问题。 非常感谢您的任何建议、修复或提示Java 我的业余基准测试程序上的NullPointerException,java,nullpointerexception,Java,Nullpointerexception,上面的代码是我在一个简单的基准测试程序中的尝试,该程序试图利用计算机CPU上的所有可用内核,只需使用5秒钟内可能计数的所有线程。 代码在t.start行上给出了一个NullPointerException,我认为这是因为我试图解决无法动态命名变量的问题。 非常感谢您的任何建议、修复或提示 import java.io.*; class threads extends Thread{ int counter=0; static volatile boolean counting=t
import java.io.*;
class threads extends Thread{
int counter=0;
static volatile boolean counting=true;
public void run(){
if(counting) {
counter++;
}
}
}
public class cores {
static PrintWriter pw= new PrintWriter(System.out, true);
@SuppressWarnings({ "static-access", "deprecation" })
public static void main(String args[]) throws InterruptedException {
int mastercounter=0;
Thread mainthread=Thread.currentThread();
int cores= Runtime.getRuntime().availableProcessors();
threads[] array=new threads[cores];
for (int x=0;x<cores;x++) {
threads t=array[x];
t.start();
}
mainthread.sleep(5000);
threads.counting=false;
for (int x=0;x<cores;x++) {
threads t=array[x];
t.stop();
mastercounter+=t.counter;
}
pw.println(mastercounter);
}
创建类型为threads的新数组时,该数组从不赋值,因为threads是一个类,数组本身是一个保存引用的数组。调用时,引用数组的默认值为null:
threads[] array=new threads[cores];
您正在对null值调用start方法,因此会得到NullPointerException。在分配数组中的值并对这些值调用方法之前,您需要初始化数组。您的数组没有元素。线程t=数组[x];当然是空的 尝试制作一些对象,并请将您的类大写
t.start();
@悬停应该是如何初始化objects@cricket_007当前位置我会让SOCVR在几分钟后结束这个问题days@HovercraftFullOfEels哦米奥尼尔!米奥尼尔!那么,这不只是另一个NPE吗?你不认为这是复制品?米奥尼尔!米奥尼尔!语无伦次是人类的。@NoiseGenerator:这正好说明了我的观点。。请注意,用于结束此问题的NPE Q/A不是通常的NPE问题,而是一个更特定于NPE和参考数组的问题。如果可能,最好用更具体的副本来结束。@HovercraftFullOfEels NPE是NPE。这是我的观点。越通用越好。因为你将学会处理更广泛的问题
array[x] = new Threads();
array[x].start();