AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题
课时
评论
关于我们
开始
开始学习
立即开始学习
我的进度
课程
任务地图
课程
Java 25
Java 25
级别 52
共享资源与同步:并发访问问题
JAVA 25 SELF
等级 52,
课时 0
这节课将介绍在多线程应用中什么是共享资源,为什么会出现竞态条件(race condition)和“丢失更新”,以及如何使用
synchronized
保护数据。我们将拆解同步的基本用法(方法与代码块),讨论来自
java.util.concurrent
的现代工具(
Lock
、
ReentrantLock
、
Semaphore
等),看看计数器递增的实践示例以及常见错误(
i
++
非原子性、错误的锁对象、关于
volatile
的误区)。
synchronized, volatile:语法与用法
JAVA 25 SELF
等级 52,
课时 1
多线程实战讲座:讲解关键字
synchronized
(代码块与方法、对象监视器以及在类级别
ClassName.class
上的锁)的工作方式;区分通过
volatile
提供的可见性与操作原子性的差别;为什么将
boolean
标志设为
volatile
很方便,而自增
count
++
需要同步。对比何时选择
synchronized
、何时选择
volatile
,并剖析常见错误。
ReentrantLock 与 ReadWriteLock:区别与示例
JAVA 25 SELF
等级 52,
课时 2
通过实践对比基于
synchronized
的经典同步与来自包
java.util.concurrent.locks
的更灵活原语:
ReentrantLock
和
ReadWriteLock
。我们将讲解如何显式管理锁(
lock()
/
unlock()
、带超时的
tryLock()
)、如何使用
ReentrantReadWriteLock
扩展读取并发,“公平性”(
fair
模式)是什么意思、各个工具适用的场景,以及最常见的错误。
互斥锁与信号量:语法与实践
JAVA 25 SELF
等级 52,
课时 3
在本讲中,我们将解析 Java 中的关键同步原语:如何使用
synchronized
和
ReentrantLock
(方法
lock()
/
unlock()
,以及
try
-
finally
结构)保护临界区,还将介绍如何通过
Semaphore
限制并行度(方法
acquire()
/
release()
)。我们会在表格中对比互斥锁与信号量,讨论实际用例(银行、连接数受限的服务器)以及导致
deadlock
和性能损失的典型错误。
同步常见错误解析
JAVA 25 SELF
等级 52,
课时 4
对 Java 多线程常见错误的实战拆解:在
ReentrantLock
和
Semaphore
上忘记调用
unlock()
/
release()
(用
try
-
finally
解决)、为
synchronized
选择了错误的监视器、互相阻塞的死锁(deadlock)与加锁顺序、过度同步,以及
volatile
的适用边界与用
AtomicInteger
的替代。配套示例、建议和通俗类比——让代码不再“卡死不动”。
Please enable JavaScript to continue using this application.