synchronized关键字的作用
静态方法:同一个类中所有被synchronized修饰的静态方法,它们在类范围内是同步的。也就是同一时间只能有一个线程调用他们中的任意一个方法,直到前面的执行完同步静态方法后,才会被再次唤醒,执行相应的静态方法
非静态方法;对于同一个类中的所有synchronized修饰的静态方法。它们在同一个对象上是同步的。当一个线程调用某个同步方法的时候,如果第二个线程在同一对象上调用某个同步非静态方法,那么这个线程将被挂起,直到前面的执行完同步非静态方法后,才会被再次唤醒,执行相应的非静态方法
package com.javaeasy.sync;
public class SyncMethods {
public synchronized static void synStaticMethod1() {
System.out.println("这是一个静态同步方法");
}
public synchronized static void synStaticMethod2() {
System.out.println("这是一个静态同步方法");
}
public static void StaticMethod() {
System.out.println("这是一个静态方法");
}
public synchronized void synMethod1() {
System.out.println("这是一个同步方法");
}
public synchronized void synMethod2() {
System.out.println("这是一个同步方法");
}
public synchronized void Method() {
System.out.println("这是一个普通方法");
}
}
package com.javaeasy.sync;
public class SyncMethodsII {
public synchronized static void synStaticMethod() {
System.out.println("这是一个静态的同步方法");
}
}
静态同步方法
同个类中的静态同步方法的访问规则
同步静态方法中,需要等线程一完成后,才能执行。
不同类中的静态·同步方法互不影响
多角度理解同步方法
理解同步方法的作用
在多线程环境下,保证变量是由某一个线程独享