-
前面讲了使用synchronized来实现线程的同步, 这次使用Lock对象来实现。一个类学学API感觉没啥意思
-
记住一个类ReentranLock类, Lock = new ReentranLock(); lock.lock; …; lock.unlock; 在这之间的
代码就能实现同步,跟synchronized的同步代码块一模一样。 -
synchronized + wait()/notify() 可以实现线程间的通信
ReentranLock + Condition.await()/Condition.signal()也可以,而且更加灵活, 可以实现多路通知。也就是说可以选择性的通知
哪个或者哪些线程,在调度上更加灵活。 -
使用Condition.await()/Condition.signal()实现 选择性通知线程的方法。尼玛就是多创建几个condition,
在不同的同步代码块中使用不同的condition
private Condition conditionA = lock.newCondition();
private Condition conditionB = lock.newCondition(); -
公平锁和非公平锁
公平锁:线程获取锁的顺序是按照线程加锁的顺序来分配的 Lock = new ReentranLock(isFair)
非公平锁:一种抢占机制 -
后面的东西从来没见用过,直接pass. 没意思
第四章:Lock的使用
最新推荐文章于 2018-11-16 18:31:41 发布