public  class Threadtest extends  Thread{
private static long  number=0;
Object a=new Object();
public Threadtest(){

}
public synchronized  void go(){
number++;
System.out.println("当前值:"+number);
}

public void run(){
for(;;){
go();
try {
Thread.sleep(1000); //test 间隔1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}

} /**
 * @param args
 */
public static void main(String[] args) {
Threadtest[] statethread=new Threadtest[10];
for(int i=0;i<statethread.length;i++){
statethread[i]=new Threadtest();
statethread[i].start();
} }}
上述程序为什么是10个一秒显示的?为什么不是每隔一秒显示一个

解决方案 »

  1.   

    正因为有sleep才会出现间隔一秒的现象
      

  2.   

    我的意思是调用了start后,等于启动了run
    接着就
    number++;
    System.out.println("当前值:"+number);
    然后间隔1秒再显示,为什么现在是10个一起显示的
      

  3.   

    因为你的第二个线程不会等你第一个线程sleep以后在启动,而是第一个number++没有sleep;就已经第二个number++;要知道一秒钟1秒可以足够显示10个
      

  4.   


    for(int i=0;i<statethread.length;i++){
    statethread[i]=new Threadtest();
    statethread[i].start();
    }
    在循环中线程是并举的。一个接一个;不停顿。