解决方案 »

  1.   

    两个thread(一个是线程池中的,一个是在构造方法中启动的)共用的是同一个SynchronizedBlocked对象。不过这种代码写的可读性太差,作为理解同步的话,这个例子真不能算好。
      

  2.   

    f()方法是同步的,while语句块中一直在建议调度器让出资源,但是没有释放锁,所以就造成了阻塞。
    至于你后边说的“它构造函数里面启动了一个局部内部匿名线程调用自己的f,应该是另外一个实例吧,和main中new的应该是两个不同对象”,内部类隐式地包含对外围类的引用,当然包含方法。