解决方案 »

  1.   

    你这段程序我觉得根本不能算生产者消费者,虽然有很多地方类似。这段程序与单线程的效果基本没有区别。同一时间只有一个线程在运行。只根据一个boolean型标记确定哪个线程运行,并且严格互斥。
      

  2.   

    这段程序,是多个线程在排队执行,和单线程没有什么区别。
    类class Resource是非线程安全的。使用的时候需要控制线程安全,也就是需要加同步锁。
    你创建的这几个线程不会同时运行。这块代码可以看做测试wait和notifyAll的小demo。嘿嘿!
      

  3.   

    嗯,生产者消费者的一个要素是产品,有人生产产品,有人消费产品,你这里没有,Resource不是产品,因为它被创建了一个实例后,大家都来操作它,而不是一部分人生产它,一部分人消费它。典型的生产者消费者是要有一个Queue之类的容器的,还要有一个产品,生产者new 产品并把它放进Queue里,消费者到Queue里把产品取出消费掉。在整个过程中,Queue是需要被同步的,而不是产品。因为Queue是状态变化的,每次生产和消费,Queue的状态都是变化的,因此要把Queue锁住再操作。生产者判断Queue没满就继续生产,满了就wait,等待被通知。消费者判断Queue是否为空,如果空,则wait,等待被通知。
      

  4.   

    为什么不会有多线程安全问题呢?
    因为synchronized(r)这句话
    都以r对象为锁,并且,当wait()时,
    都在r对象的wait set(把他想象成一个休息室)里。最后,这个程序写的很不好。
      

  5.   


    茅塞顿开    这个解释我喜欢   不能更棒了
    貌似懂了一点点了,是不是说我对资源的操作,是属于资源的方法,需要定义在资源里,然后赋的值就相当于放在resource里的产品了。而我这里只有一个产品。是这样吗?