本帖最后由 DeronZ 于 2011-07-29 16:45:26 编辑

解决方案 »

  1.   

    很简单,你添加数据的时候没有加锁,添加数据往l中写数据,这里没有对l加锁,虽然是使用l进行操作。
    你这个例子,写得不好。要么一直添加数据,要么一直删除数据。没有体现消费者/生产者模式的意义。
    两个方法要操作时都要加锁,为了使当前方法停止,要使用wait和notify进行通知。
      

  2.   

    在同步块里不需要 Thread.wait()???
      

  3.   


    谢谢,添加时加锁就对了。没有那种在一处加锁,其他位置不执行同步也能被锁住的锁吗。程序里只有一处遍历操作,其他执行添加操作的位置比较松散。如果每个添加操作都加同步的话修改的地方又太多。我试过用Vector,性能又比ArrayList差些。