第五十四道Java小问题

import java.util.concurrent.TimeUnit;
class TestWork {
 volatile int i = 0;
 void f() throws InterruptedException {
  while (i == 0) {
   synchronized (this) {
    wait();
   }
  }
  System.out.println("Waken!");
 }
 void g() {
  synchronized (this) {
   i = 1;
   notifyAll();
  }
 }
}
class Test {
 public static void main(String[] args) throws Exception {
  final TestWork work = new TestWork();
  new Thread() {
   public void run() {
    try {
     work.f();
    } catch (InterruptedException e) {
    }
   }
  }.start();
  TimeUnit.SECONDS.sleep(1);
  new Thread() {
   public void run() {
    work.g();
   }
  }.start();
 }
}

 

请问以上程序的输出是:

你可能感兴趣的:(java,thread,F#)