关于Synchronized

本文详细解释了Java中`synchronized`关键字在实现线程同步、保护关键资源和协调线程操作中的作用,区分了不同情况下(方法、代码块和静态方法)的锁行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        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");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值