Java技术教程 – Java中的同步代码块详解与案例

2024-12-08 0 621

Java技术教程

Java中的同步代码块详解与案例

概述

多线程编程中,为了保证共享资源的线程安全性,常常需要使用同步机制。除了使用synchronized关键字直接修饰方法外,还可以利用同步代码块来实现更灵活的同步控制。

同步代码块的基本用法

同步代码块的基本语法如下:

public void someMethod() {
    synchronized (lockObject) {
        // 需要同步的代码
    }
}
    

其中,lockObject是一个监视器对象,可以是任意对象。

详细讲解

1. 定义共享资源

假设我们有一个共享资源计数器:

private int count = 0;
private final Object lock = new Object();
    

2. 使用同步代码块进行同步

在两个线程中对计数器进行操作时,使用同步代码块来保证线程安全:

public void increment() {
    synchronized (lock) {
        count++;
    }
}

public int getCount() {
    synchronized (lock) {
        return count;
    }
}
    

3. 创建并启动线程

创建两个线程来演示同步代码块的使用:

public class SynchronizedBlockExample {
    private int count = 0;
    private final Object lock = new Object();

    public void increment() {
        synchronized (lock) {
            count++;
        }
    }

    public int getCount() {
        synchronized (lock) {
            return count;
        }
    }

    public static void main(String[] args) {
        SynchronizedBlockExample example = new SynchronizedBlockExample();

        Thread t1 = new Thread(() -> {
            for (int i = 0; i  {
            for (int i = 0; i < 1000; i++) {
                example.increment();
            }
        });

        t1.start();
        t2.start();

        try {
            t1.join();
            t2.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("Final count: " + example.getCount());
    }
}
    

案例运行结果

运行上述代码,可以看到最终计数器count的值为2000,证明了同步代码块能够正确地对共享资源进行同步。

总结

同步代码块提供了一种更灵活的同步机制,通过指定监视器对象来控制同步范围。本文详细讲解了同步代码块的使用方法,并提供了实际案例,希望能够帮助读者更好地理解和应用Java中的多线程同步技术。

Java技术教程
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

本站尊重知识产权,如知识产权权利人认为平台内容涉嫌侵犯到您的权益,可通过邮件:8990553@qq.com,我们将及时删除文章
本站所有资源仅用于学习及研究使用,请必须在24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担。资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您权益请联系本站删除

腾谷资源站 java Java技术教程 – Java中的同步代码块详解与案例 https://www.tenguzhan.com/2922.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务