本帖最后由 huanhuan30 于 2012-07-18 15:37:52 编辑

解决方案 »

  1.   

    个人浅见:问题  1   从等待状态回来时,首先得到了锁,(不需要再执行lock,) 接着(1)处执行。
    问题  2   那些put对象都是确定的。因为一旦某个线程存放时,其他的存放线程是不能同时存放的,
              其他取的线程也不能读取. 而某个线程读取时,其他读取线程不能读取,存放线程也不能存放。按楼主的程序有3个存放线程,5个读取线程。所以输出是这样的。
    data1
    data1
    data1
    data1
    data1
    data1
    data2
    data2
    data2
    data2
    data2
    data2
    data3
    data3
    data3
    data3
    data3
    data3
      

  2.   

    针对第一个问题:多线程中的await()的含义是,当每个线程都调用了await()后,就表示这些线程都可以继续执行,否则就会等待。所以不到你说的0处。
    针对第二个问题:读操作可以不用同步,因为不牵扯到数据修改,如果是写操作的话就要同步了。一点个人建议,不对莫怪。
      

  3.   

    针对第一个问题:多线程中的await()的含义是,当每个线程都调用了await()后,就表示这些线程都可以继续执行,否则就会等待。所以不到你说的0处。
    针对第二个问题:读操作可以不用同步,因为不牵扯到数据修改,如果是写操作的话就要同步了。一点个人建议,不对莫怪。