我是java的新手,发现了一个练习基本线程同步的练习。问题是反复打印12345678910 10987654321直到程序停止。应该使用十种不同的线程。
这是我的代码到目前为止: 我是第一个尝试获得第一个数字(第一个工作),但它一直给我一个例外
public static void main(String[] args){
threadOne one = new threadOne();
one.start();
}
}
class updateNumber{
private int i;
synchronized void increase(int s){
this.i=s;
System.out.println(i);
}
}
class threadOne extends Thread {
private updateNumber grab;
public void run() {
try{
grab.increase(1);
}
catch(Exception e){
System.out.println("error in thread one");
}
}
}
我可能会以完全错误的方式解决这个问题,但我已经阅读了很多文档而且我已经完全糊涂了。
答案 0 :(得分:3)
看起来你没有创建一个新的更新实例
class threadOne extends Thread {
private updateNumber grab;
public void run() {
try{
grab.increase(1); // null pointer reference...<<<<<<<
}
catch(Exception e){
System.out.println("error in thread one");
}
}
}
//你需要分配内存以更新数字
//private updateNumber grab = new updateNumber();
class threadOne extends Thread {
private updateNumber grab = new updateNumber();
public void run() {
try{
grab.increase(1);
}
catch(Exception e){
System.out.println("error in thread one");
}
}
}