for(int i=0;i<=5;i++){
   System.out.println("i am ok");
  }
  try{
   sleep(300);//for外面
  }

解决方案 »

  1.   

    不过即使你移动到里面去
    也不一定就能得到你想要的结果,因为多线程的调度是很不确定的
    sleep(300);
    并不是严格意义的休息300毫秒你应该一个线程在一个对象上调用wait方法等着,直到另一个线程在这个对象上调用notify方法
    注意小心死锁
      

  2.   

    你这样:
    for(int i=0;i<=5;i++){
       System.out.println("i am ok");
       try{
         sleep(300);
       }
       catch(InterruptedException e){}
    }
      

  3.   

    你的第一个线程是每执行一步就sleep(500),
    而第二个线程是执行完循环:
    for(int i=0;i<=5;i++){
       System.out.println("i am ok");
      }
    后才sleep(300),
    so you get this result
    如果泥巴代码改成:
    class Righthand extends Thread{
     public void run(){
      for(int i=0;i<=5;i++){
       System.out.println("i am ok");
      try{
       sleep(300);
      }
      catch(InterruptedException e){}
     }
     }
    }就好了
      

  4.   

    代码修改如下:public class G {
     static Lefthand left;
     static Righthand right;
     public static void main(String args[]){
      left=new Lefthand();
      right=new Righthand();
      left.start();
      right.start();
     }
    }
    class Lefthand extends Thread{
     public void run(){
      for(int i=0;i<=50;i++){
       System.out.println("i am a student");
       try{
        sleep(500);
       }
       catch(InterruptedException e){}
      }
     }
    }
    class Righthand extends Thread{
     public void run(){
      for(int i=0;i<=50;i++){
       System.out.println("i am ok");
      /*应当把你的线程休眠放在循环的里面,否着的话这个线程一直输出,直到循环结束,才休息 
        这时,第一个线程才能运行!
      */  
      try{
       sleep(300);
      }
      catch(InterruptedException e){}
     }
     }
    }程序我测试果,能运行。和你的结果一样!祝你好运!
      

  5.   

    这个程序的输出是不定的,因为线程得到CPU的时间片是随机的,你多运行几次会发现结果并不完全一样,下面是我运行出来的一个结果:
    i am a student
    i am ok
    i am ok
    i am a student
    i am ok
    i am ok
    i am a student
    i am ok
    i am ok
    i am a student
    i am a student
    i am a student好不容易才得到一个不同的结果,如果你将延时改为:300->3 500->5 再运行,几次运行的结果不一样.