关于Synchronized

        Synchronized用于实现线程间的同步。它可以被用于方法或代码块上,确保同一时间只有一个线程可以访问被 synchronized 修饰的代码,也就是常说的锁,synchronized有三点作用

        1)实现线程安全:通过使用 synchronized,可以确保多个线程在执行共享资源的代码时,不会发生数据冲突或不一致的情况。

        2)保护关键资源:对于一些关键资源,只允许一个线程进行访问,其他线程需要等待锁释放后才能继续执行。

        3)协调线程间的操作:通过使用 synchronized,可以实现多个线程之间的协调和顺序执行。

当synchronized运用在普通方法上,表示会锁定整个方法体,确保同一时间只有一个线程可以执行该方法。与synchronized(this)的锁的对象是一样的。

public synchronized void func3(){
    ;
}

当synchronized修饰代码块时,则只会锁定代码块内的部分代码,而不是整个方法。并且synchronized(this)与synchronized修饰方法的作用相同,同一时间,线程只能访问其中一个。

当synchronized修饰静态方法时,会锁定整个类的 Class 对象,确保同一时间只有一个线程可以执行该静态方法。

public synchronized static void func(){
    System.out.println("hahaha");
}
public void func1(){
    synchronized (this){
        System.out.println("hahaha");
    }
}

你可能感兴趣的:(java,开发语言)