Unsafe
java7之后在并发中大量使用Unsafe来保证并发状态,字段修改的唯一性
代码例子
例如在AbstractQueuedSynchronizer中的CAS中
1 | //创建unsafe对象 |
阻塞线程park和unpark
park和unpark与object.wait() object.notify一样都是可以阻塞和唤醒线程但是俩这有如下区别:
- 面向的主体不同,LockSupport的park, unpark面向的是线程,而Object.wait, nofify面向的是对象
- 底层实现机制不同,可以看到Object的wait, notify方法也是native方法,Unsafe的park和unpark方法也是native方法,底层实现不同,Object.notify不能唤醒Unsafe park的线程。