郭利超 发表于 2013-3-18 18:23
synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有 ...
synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C、 D等)正在用这个方法,有的话要等正在使用synchronized方法的线程B(或者C 、D)运行完这个方法后再运行此线程A,没有的话,直接运行。 首先你这样提到,也就是在一个线程运行的时候会判断在该锁也就是同步里面是否有其他的线程在执行,那么如果比如这样,在同步函数里面加了判断标记,这样是不是可以理解为加了双重锁一样,当一个线程进来时,会不会在这两个地方同时都上锁,或者将标记改为真,以防止其他线程运行呢?当这个线程wait()了,这个时候,另外一组线程也按这样的方式,直到出了同步把锁打开让其他线程进去,可是为什么还会出现不和谐的情况?比如毕老师的生产和消费视频,生产和消费不统一的情况呢?
能不能和我说说synchronized(this)情况,不太明白,谢谢你,辛苦了! |