123 java锁synchronized相关内容
自旋锁:循环等待,不断尝试获取,成功后退出。 乐观锁: 修改数据时发现数据变化则重读数据并修改---假定不冲突 悲观锁:从读数据开始就加锁 -- 假定冲突 独占锁:一把用写,其他线程不能加锁。 共享锁:读,可以加读锁,但不能加写锁。 (不)可重入锁:已经获取锁的线程未释放前重新获取锁,是否阻塞。reentrantlock,synchronized 均可重入 公平锁,非公平锁:是否按顺序拿锁。 synchronized: 对非静态方法加锁this,静态方法加锁:class 可重入,独占锁,悲观锁 单线程内无意义的锁操作,触发jit后会出现锁消除 合并多个无意义的小锁为一个锁--锁粗化。jvm处理时触发jit优化。 实例锁的标记存储在对象头(class meta address、array length、markword)中 ;mark word(hashcode,threadid、lock record address、monitor address,forword address) 状态(unlocked、biased、light-weight lock,heavy-weight lock,marked for gc) 状态和存的值一一对应。 抢锁时:读取对象的mark word存入当前线程;cas操作mark word,新值 local record address(例:轻量级锁