?并发编程篇-01-多线程课程介绍_哔哩哔哩_bilibili
volatie关键字定义线程共享变量,然后用这个变量作为线程运行条件?
线程对象.stop()强制停止
interrupt()
?
synchronized底层原理是什么? - 知乎 (zhihu.com)
这个文章讲得好?
Owner和锁对象如何关联?在对象头中根据比特位不同判断
CAS比较并交换id
没人用线程时-->无锁
连续一个线程获取锁-->偏向锁(一次CAS,后续对比线程id)
不竞争的轮流获取锁-->轻量级锁(每次CAS)
竞争-->重量级锁
?
工作内存可以理解为类似虚拟机栈,是线程独占的内存。
主内存可以理解为堆,是进程独占的,线程共享的。
线程之间不能直接交互数据,线程都可以访问堆(主内存)
线程就要通过数据刷到主内存然后被另一个线程读回去,这样来进行数据交互。
结合内存结构想想就好
并发编程篇-12-线程安全-你谈谈对CAS的理解_哔哩哔哩_bilibili
用数据当成版本号,比对,如果不对就不能写入。
屏障放在写的上面,读的下面。所以不能随便加,要根据读写操作的位置加,
如果都加volatile也可以,但是会影响cpu效率
?
资源就是锁
一个key要往分段加数据会加可重入锁,如果高并发情况锁获取重了,会有一个CAS自旋二次保证。然后获取锁的进去添加。
缺点,锁住性能低,分段不能扩容?
?
?
?