synchronized关键字的底层原理?

发布于 2024-07-18
578

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

扫码阅读
手机扫码阅读

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...

springboot葵花宝典

主要分享JAVA技术,主要包含SpringBoot、SpingCloud、Docker、中间件等技术,以及Github开源项目

275 篇文章
浏览 253.8K

还在用多套工具管项目?

一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。

加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线