线程同步synchronized
synchronized关键字的用法有两种,一种是在方法上使用,像static一样做为方法的修饰符使用
如这样的方法就是线程同步方法
Public synchronized void methodAAA(){}
另一种是像while代码块一样,代码块内的代码就是同步的
如这样使用的代码
synchronized(Object){}
注意:
A.无论synchronized关键字加在方法上还是对象上,它取得的锁都是对象,而不是把一段代码或函数当作锁――而且同步方法很可能还会被其他线程的对象访问。
其中实例同步函数的锁的对象是this,静态同步函数的锁的对象是Class对象
B.每个对象只有一个锁(lock)与之相关联。
C.实现同步是要很大的系统开销作为代价的,甚至可能造成死锁,所以尽量避免无谓的同步控制。
做一个小总结,就不写太多内容了,当大家看到的时候就当是复习吧。其中懒汉式的单例模式有助于加深理解这个线程同步理解和应用。
|
|