import java.lang.Runnable;
import java.lang.Thread;public class bean8 implements Runnable{  public bean8() {
         TestThread testthread1 = new TestThread(this,"1");
         TestThread testthread2 = new TestThread(this,"2");         testthread2.start();
         testthread1.start();
  }  public static void main(String[] args) throws Exception {
    new bean8();
  }
   public void run(){        TestThread t = (TestThread) Thread.currentThread();
        try{
          if (!t.getName().equalsIgnoreCase("1")) {
              synchronized(this) {
                  wait();
              }
          }
          while(true){            System.out.println("@time in thread"+ t.getName()+ "="+ t.increaseTime());            if(t.getTime()%10 == 0) {
              synchronized(this) {
                System.out.println("****************************************");
                notify();
                if ( t.getTime()==100 ) break;
                wait();
            }
          }
        }
        }catch(Exception e){e.printStackTrace();}
    }}class TestThread extends Thread{
    private int time = 0 ;
    public TestThread(Runnable r,String name){
      super(r,name);
    }
    public int getTime(){
       return time;
    }
    public int increaseTime (){
       return ++time;
    }
}

解决方案 »

  1.   

    wait()让线程进入等待状态,
    相对应的有notify(叫醒一个类)与notifyAll(叫醒所有类)
      

  2.   

    wait()和notify()可以实现线程对资源访问的同步.但他们必须在synchronized子句中执行,就是说他们的执行条件是必须取得相应的对象机锁.wait()会释放自己所占有的机锁,因此他比sleep(),suspend()等等有效率得多,不过多数用在两个现成之间的同步.