锁,同步代码块,同步方法 区别

锁,同步代码块,同步方法 1、同步代码块 synchronized(锁对象){ 需要被锁的代码//线程只有拿到了锁对象,才能执行这里的代码!!!换言之,这里的代码如果执行了,说明该线程拿到了锁对象,其他线程不能拿到该锁对象 } 注意 多个线程必须使用同一个锁对象,要不然锁无效 2、同步方法 public synchronized void show(){} //普通方法的锁是this public static synchronized void show(){} //静态方法的锁是当前类的字节码文件对象 类名.class 3、注意问题 多个线程必须使用同一个锁对象,要不然锁无效 同步代码块锁可以是任意对象 同步方法的锁是this 静态方法的锁是当前类的字节码文件对象 类名.class 4、什么时候用同步代码块,什么时候用同步方法 尽可能用同步代码块 如果一个方法内的所有代码都被同步代码块包住了,那就用同步方法就可以了
经验分享 程序员 微信小程序 职场和发展