Java的锁机制---synchronsized关键字

在高并发环境中,为了防止丢失更新,Java提供了synchronized关键字来实现锁机制,确保多线程对共享资源的原子性操作。synchronized可修饰方法或代码块,实现互斥访问。当一个线程访问synchronized方法或代码块时,其他线程必须等待锁的释放。synchronized通过monitorenter和monitorexit指令实现锁的获取和释放,保证线程安全,异常时会自动释放锁。

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

引言

高并发环境下,多线程可能需要同时访问一个资源,并交替执行非原子性的操作,很容易出现最终结果与期望值相违背的情况,或者直接引发程序错误。

举个简单示例,存在一个初始静态变量count=0,两个线程分别对count进行100000次加1操作,期望的结果是200000,实际是这样的吗?写个程序跑下看看:

public class CountWithoutSyn {

    private volatile static int count = 0;

    public static void main(String[] args) throws InterruptedException {

        CountDownLatch countDownLatch = new CountDownLatch(2);

        // 启动线程A
        new Thread(new Runnable() {
            @Override
            public void run() {
                for(int i=0; i<100000; i++){
                    count++;
                }
                countDownLatch.countDown();
            }
        }).start();

        // 启动线程B
        new Thread(new Runnable() {
            @Override
            public void r
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值