synchronized的原理

线程安全是并发编程的最大关注点,造成线程安全问题的主要诱因有两点,一是存在共享数据(也称临界资源),二是存在多条线程共同操作共享数据。为了解决这个问题,Java引入互斥锁。互斥锁的意思是在同一时刻,只有一个线程能够执行锁里面的临界资源。在Java并发编程中,synchronized有着举足轻重的地位。

synchronized底层语义原理

sync锁的对象monitor指针指向一个ObjectMonitor对象,所有线程加入他的entrylist里面,去cas抢锁,更改state加1拿锁,执行完代码,释放锁state减1,和aqs机制差不多,只是所有线程不阻塞,cas抢锁,没有队列,属于非公平锁。
wait的时候,线程进waitset休眠,等待notify唤醒

加锁本质就是在锁对象的对象头中写入当前线程id。
【有待补充】

参考链接:深入理解Java并发之synchronized实现原理

说点什么

avatar
  Subscribe  
提醒

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部