在毕老师视频第12天-03视频里说了线程通信.
源码我就不贴了,其中,A线程写数据,B线程读数据,为了数据的同步,加了锁,同时,为了防止数据覆盖(其实我认为也是同步),加了flag标志,根据flag标志睡眠线程.
而我看到,flag也在锁内,并且也是锁对象,这样,如果A线程睡眠了,然后B线程运行,此时flag还是锁住的,B线程应该拿不到运行权,不能唤起A线程,应该造成死锁,但是实际运行却没有,这是怎么回事呢?
在毕老师视频第12天-03视频里说了线程通信.
源码我就不贴了,其中,A线程写数据,B线程读数据,为了数据的同步,加了锁,同时,为了防止数据覆盖(其实我认为也是同步),加了flag标志,根据flag标志睡眠线程.
而我看到,flag也在锁内,并且也是锁对象,这样,如果A线程睡眠了,然后B线程运行,此时flag还是锁住的,B线程应该拿不到运行权,不能唤起A线程,应该造成死锁,但是实际运行却没有,这是怎么回事呢?