0

我对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");
        }
    }
}

我可能会以完全错误的方式解决这个问题,但我已经阅读了很多文档并且完全感到困惑。

4

1 回答 1

3

It looks like you didnt create a new instance of update

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");
        }
    }
}

// you need to alocate memory to updateNumber like this

//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");
            }
        }
    }
于 2013-03-22T03:35:24.570 回答