public class SyncDemo1 {
  public static void main(String[] args) {
    Table table = new Table();
    Person p1 = table.new Person();
    Person p2 = table.new Person();
    p1.start();
    p2.start();
  }
}
class Table{
  int beans=20;
  Object monitor = new Object(); //同步监视器, 同步锁
//boolean monitor.lock = false
  public synchronized int getBean(){
    int a = 5;
    if(beans==0)
      throw new RuntimeException("没了");
    Thread.yield();
    return beans--;
  }
  class Person extends Thread{
    public void run(){
      while(true){
        int bean = getBean();
        System.out.println(getName()+"拿到:"+bean);
        Thread.yield();
      }
    }
  }
}上面的代码运行如下Thread-1拿到:20
Thread-0拿到:19
Thread-1拿到:18
Thread-0拿到:17
Thread-0拿到:16
Thread-1拿到:15
Thread-1拿到:14
Thread-0拿到:13
Thread-1拿到:12
Thread-1拿到:10
Thread-0拿到:11
Thread-0拿到:9
Thread-1拿到:8
Thread-1拿到:7
Thread-0拿到:6
Thread-0拿到:4
Thread-1拿到:5
Thread-0拿到:3
Thread-1拿到:2
Thread-0拿到:1现问:整个运行过程是怎么样的,能帮我分析下吗,thanks