00:00
我们说呀,现在解决同步的,解决这种现在的问题的方式,是不是你除了这个关键字以外,是不是有另外一种解决方案了呀,在JDK1.5以后,我们是不是可以选择用同步锁呀,对吧?那我说将来用同步锁怎么解决这个问题呢?我把这个呢再去COPY1份对吧?嗯,这个呢就叫做for,嗯,Lock用同锁的方式解决啊,等会我把这头呢给它注掉。是不是个给大家保留一份了,对吧?大家下去看就可以了,那这时让我过来,我们说现在呢,解决同步线上安全问题的方式是不除了神经LA以外,是不是可以用同步锁呀,对吧?那接下来呢,我们说搞一个同步锁是不是叫lock,等于用一个retre lock呀,那么这个时候用了这个lock以后注意,那么我们说singleize你是不是就不可以不用了呀?对吧,没人说你上两锁的吧,你说我来个singleize,为了保险起见,我再来个lock,那是不是多余啊,对吧,对吧,就别给自己找事了啊,那这样的话呢,我们说是不是上锁呀,对吧?那首先lock.lockck这叫上锁,然后千万别忘了,无论如何这些操作你都得给它放到TRY,并且unlock放到finally中去,就这些得放到finally中去,然后呢,一定得记得lock.alock手动的释放速,对吧,下边的这个操。
01:33
不过是不是也一样呢?Singleize可以去掉了,然后呢,lock.lock上锁相应的呢,我也得来个叫做TRY对吧?嗯,Catch现在用不上,那就来个finally对吧?刚才这段是不是写里啊,然后相应的来个finally了,那就来个lock.a lock是政府对吧?那这个时候就又涉及到一个什么问题了呢?我现在是不是用的lock这把锁,你wait notify是不是用的this啊,对吧?那这个时候我们说你lock也有它属于自己的wait和notify的方式。
02:12
听吧,我说wait它也有自己,哎,不是milk也有它自己wait和not的方式吧,这个东西叫做什么呢?叫做condition,看懂吗?Can用condition可以通控制线程通信,那么实际上道理呢,跟原来一模一样,对吧,现在呢,Condition condition对象对吧?它里边有个是不是这几个方法呀,分别对应的就是原来我们之前我们用的wait notify和notify out,就这么简单这吧,对吧,它里边提供了几个方法,就是用于对应的原来的wait notify notify out,那么我们说那我这个condition如何获取,你是不得通过当前的那个锁去获取啊,对吧,通过当前所有的叫做new condition可以获取这个condition,然后你就可以完成等待唤醒机制了,能懂了吧,对吧,那这个时候呢,首先第一步我是得先获取这个condition对吧,那就来个private。
03:13
啊,C等于叫做look.new condition对吧?Ctrl save o导一下包获取了这个condition以后,接下来的操作就都一样,Wait是不是就不用object不用this了呀,用叫做condition,点上a wait对吧,对吧,对应的就是我们的wait,相应的你是不是唤醒啊,唤醒也得用condition点上叫做叫做single all对吧,说对应着notify all对吧?现在说下边这个是不是也一个道理,Wait呢就不要了,变成wait弄范奥呢就不用了,用condition点叫做single哦,是搞定了,那这个时候再去右键。
04:07
运行。嗯。是不是效果一样对吧,我们四个对吧,四个是不是效果一样啊对吧,那这样的话就是用叫做lock同步锁以及condition完成了一个线程。这个通信对吧,以及等待唤醒机制,以及线程同步等等。能搞定吧,对吧,好了,那么接下来的时间呢,大家呢,就把刚才的这个案例对吧,再回顾回顾,或者用lock和condition把这个生产者消费者用一用,然后呢,尝试尝试理解理解这个虚假唤醒是怎么回事。
我来说两句