死锁 有这样的情况:一个线程需要同时获得多把锁,这时就容易发生死锁 t1线程获得A对象锁,接下来想获取B对象的锁,t2线程获得B对象锁,接下来想要获取A对象锁 例: Object A = new Object();Object B = new Object();new Thread(() -> {synchronized (A) {log.debug("lock A");try {Thr
锁顺序死锁 我们知道,加锁是为了保证线程安全性而做的同步操作,而过度的加锁可能导致各个线程彼此依赖别的线程已经持有的锁。先上一段代码瞅瞅: public class DeadLockDemo { public static void main(String[] args) { Object lock1 = new Object(); Object lock2
📝个人主页:五敷有你 🔥系列专栏:并发编程 ⛺️稳重求进,晒太阳 活锁 定义:活锁出现在两个线程互相改变对象的结束条件,最后谁也无法结束 代码示例 public class TestLiveLock {static volatile int count = 10;static final Object lock = new Object();publ
1 记号 1.1 通道和数据 同系统分析与验证课上学的Channel system记号类似,CSP中用序偶 c . v c.v c.v(参见笔记一的2.14)表示在通道 c c c上传送数据 v v v。则进程 P P P能够在通道 c c c上通信的数据记为: α c ( P ) = { v ∣ c . v ∈ α P } \alpha c(P) = \{v \ | \ c.v \in \