synchronized :
用法:
1.可以写在方法上,表示方法是同步的,用于保证线程安全
2.用于同步代码块中 synchronized(xxx){…}
注意事项:
1.用于方法上:
此时如果多个线程竞争该方法时,锁住的是该类对象的实例
2.同步代码块
(1) synchronized(this){…} 锁住的仍然是当前对象的实例
(2) Object lock = new Object();
synchronized(lock){
…
}
锁住的是Object 对象,多个线程抢占执行时,锁是Object 的实例
(3)synchronized(xxx.class){…} 锁住的是当前的类,非实例
坑一:如果为对象锁的情况下,一旦该对象被锁住,其他方法均不会被其他的线程调用
synchronized 相关
最新推荐文章于 2023-11-22 10:57:15 发布