多线程里的Lock和conditions什么关系,一点都没头绪

解决方案 »

  1.   

    讲到Lock,就不能不讲Conditon,前者代替了synchronized,而后者则代替了Object对象上的wait()、 notify()和notifyAll()方法(Condition中提供了await()、signal()和signalAll()方法),当满足运行条件前挂起线程。Condition是与Lock结合使用的,通过Lock.newCondition()方法能够创建与Lock绑定的 Condition实例。
      

  2.   

    Lock和Condition是自JDK1.5以来实现多线程同步的又一个方案.!
    Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。此实现允许更灵活的结构,可以具有差别很大的属性,可以支持多个相关的 Condition 对象。
    Lock有读锁,写锁, 读写锁等.Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象提供多个等待 set(wait-set)。其中,Lock 替代了 synchronized 方法和语句的使用,Condition 替代了 Object 监视器方法的使用。 
      

  3.   

    Lock  就相当于一间房子在同一时间内只允许一个人进入,Lock  一个method 也就是在在同一时,只允许一个线程调度。等这个调度完成后才能其它的线程利用.