1修饰一个方法 在方法前加关键字synchronized即可,锁对象属于类的实例
synchronized public void add(){ //todo }注意: 1)A线程持有object对象的Lock锁,B线程可以以异步的方式调用object对象中的非synchronized方法 2)同步不具有继承性 子类覆盖了父类synchronize关键字修饰的方法,若子类方法没有用synchronized修饰,则默认没有同步 2synchronized同步语句块 同步方法的弊端:当同步方法执行较长时间任务时,等待时间长 1)当一个线程访问object的一个synchronized同步代码块时,另一个线程仍然可以访问该object对象中的非synchronized(this)同步代码块,相比于同步方法缩小了同步范围,运行时间缩短,运行效率加快 2)当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对同一个object中所有synchronized(this)同步代码块的访问将被阻塞 3)synchronized(this)锁定的是当前对象 4)多个线程调用同一个对象中不同名称的synchronized同步方法或是synchronized(this)同步代码块时,调用的效果就是按顺序执行,也就是同步的,阻塞的 3将任意对象作为对象监视器synchronized(非this对象x) 4静态同步synchronized方法与synchronized(class)代码块,给Class类上锁,锁定的是类的所有对象
public class Service{ public static void printA(){ synchronized(Service.class){ } } }