- 博客(6)
- 收藏
- 关注
原创 volatile 与 synchronized 的使用场景
摘要:在并发编程中,synchronized和volatile的选择取决于操作特性。synchronized适用于需要原子性、可见性和有序性的复合操作(如财务扣减、多变量修改),能确保代码块安全执行。volatile仅适用于单一变量修改且只需可见性的场景(如线程终止标记),但不保证复合操作的原子性。关键区别在于:synchronized提供三合一保障但性能开销大,volatile无锁但功能有限。开发时应根据业务需求选择——强一致性用锁,轻量通知用volatile。特别注意自增等操作实际是复合操作,必须用锁保
2026-03-12 22:29:56
187
原创 synchronized 核心难点解析
关键原则:锁的互斥性取决于对象是否相同。同一对象被多个线程竞争时会互斥,不同对象则互不影响。重要结论:实例锁和类锁是独立的两套机制,静态同步方法与实例同步方法之间不会互相阻塞。synchronized 锁的永远是对象而非代码或方法。锁定的是类的 Class 对象,所有实例共享同一把锁,会全局互斥。锁状态通过 CAS 操作在对象头中更新,任何对象都可作为锁载体。当锁升级为重量级时,线程通过 Monitor 实现阻塞和唤醒。锁定的是具体的对象实例,不同实例间的同步方法互不干扰。
2026-03-12 22:13:36
216
原创 7-1 信使
战争时期,前线有 n 个哨所,每个哨所可能会与其他若干个哨所之间有通信联系。直至所有 n 个哨所全部接到命令后,送信才算成功。因为准备充足,每个哨所内都安排了足够的信使(如果一个哨所与其他k个哨所有通信联系的话,这个哨所内至少会配备k个信使)。第 2 至 m+1 行:每行三个整数 i,j,k,中间用 1 个空格隔开,表示第 i 个和第 j 个哨所之间存在通信线路,且这条线路要花费 k 天。输入第 1 行有两个整数 n 和 m,中间用 1 个空格隔开,分别表示有 n 个哨所和 m 条通信线路。
2024-12-21 16:48:46
618
原创 求助:basys3开发板,怎么实现流水灯(每个灯间隔1s)
所以怎么才能实现1s一亮?而且我发现只要周期一大,开发板就实现不了了。设计要求:实现5位Led灯从左向右循环依次每隔1秒点亮。50 闪烁但是间隔时间变慢相对于100,闪烁的更明显。1 不可以,只有最初的一个灯亮,不能流水。1. 流水灯设计设计。
2024-12-21 15:21:02
762
原创 7-1 数据结构实验三 图的广度优先搜索
以邻接表作存储结构,编写程序对给定的无向图G()进行广度优先遍历,并在遍历的过程中计算图G的连通分量个数及边的数目。本题限定在遍历过程中,如果同时出现多个待访问的顶点,则优先选择编号最小的一个进行访问,以顶点0为遍历起点。邻接表的类型描述。
2024-12-15 20:50:15
350
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅