多线程之:线程同步代码块
java中使用关键字synchronized进行线程同步,有四中同步块:
1、实例方法
2、静态方法
3、实例方法中的同步块
4、静态方法中的同步块
实例方法同步:在方法申明中使用synchronized 关键字,同步在拥有该方法的对象上
1 public synchronized void increase(){ 2 this.id++; 3 }
静态方法同步:与实例方法同步一样,在方法申明中使用synchronized 关键字,同步在拥有该方法的类对象上,同时只允许一个线程执行同一个类中的静态同步方法
1 public static synchronized void increase(){ 2 this.id++; 3 }
实例方法中的同步块:在方法申明中不使用synchronized 关键字,但在方法中使用synchronized 包围一部分代码,进行同步
1 public void increase(){ 2 synchronized (this){ 3 this.id++; 4 } 5 }
静态方法中的同步块:和静态方法同步类似,在方法申明中不使用synchronized 关键字,在方法中使用synchronized 包围一部分代码,进行同步
1 public static void increase(){ 2 synchronized (this){ 3 this.id++; 4 } 5 }