扫码阅读
手机扫码阅读

synchronized关键字的底层原理?

237 2024-07-18

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:synchronized关键字的底层原理?
文章来源:
springboot葵花宝典
扫码关注公众号

synchronized关键字的底层原理

在 Java 中,关键字 synchronized 可以保证在同一时刻,只有一个线程可以执行某个方法或者代码块。这主要用于保护共享数据的操作,从而防止线程间的数据竞争。此外,synchronized 还能够保证一个线程对共享数据的变化可以被其他线程及时看到。

1. synchronized的基本使用

在实际场景中,例如抢票程序,如果不加锁,可能会出现超卖或者一张票被多个人购买的情况。通过使用 synchronized 关键字,可以确保同一时刻至多只有一个线程持有对象锁,其它线程在尝试获取该锁时会被阻塞。以下是相关代码示例:

public class synchronizedTest {
    // 创建一个静态对象作为锁
    static Object lock = new Object();
    
    // 初始票数
    int ticketNum = 20;
    
    // 获取票的方法,使用 synchronized 修饰确保线程安全
    public synchronized void getTicket() {
        // 使用当前对象作为锁
        synchronized (this) {
            // 如果票数已经为零,则返回
            if (ticketNum...

想要了解更多内容?

查看原文:synchronized关键字的底层原理?
文章来源:
springboot葵花宝典
扫码关注公众号