volatile
volatile:https://www.cnblogs.com/silyvin/p/9106671.html
long与double的原子性:https://www.cnblogs.com/silyvin/p/10424717.html
伪共享:https://www.cnblogs.com/silyvin/p/11180293.html
在此做个总结:
第一:使用volatile关键字会强制将修改的值立即写入主存;
第二:使用volatile关键字的话,当线程2进行修改时,会导致线程1的工作内存中缓存变量stop的缓存行无效(反映到硬件层的话,就是CPU的L1或者L2缓存中对应的缓存行无效);
第三:由于线程1的工作内存中缓存变量stop的缓存行无效,所以线程1再次读取变量stop的值时会去主存读取。
第四:这种机制下,缓存行无效时,64个字节的缓存行变量全部无效,线程会去主内存读取所有(不限于)变量,这就是伪共享。
第五:volatile确保long与double 8字节64位数据的原子性。
第六:指令重排
jdk cas aba
AtomicStampedReference
https://www.cnblogs.com/java20130722/p/3206742.html
某进程占用的端口
netstat -nap | grep 23288 查看某个进程id的端口占用
如何中断一个线程
https://www.cnblogs.com/silyvin/p/9387980.html
weakreference
https://www.cnblogs.com/silyvin/p/9106625.html
- key 使用强引用:引用的
ThreadLocal
的对象被回收了,但是ThreadLocalMap
还持有ThreadLocal
的强引用,如果没有手动删除,ThreadLocal
不会被回收,导致Entry
内存泄漏。 - key 使用弱引用:引用的
ThreadLocal
的对象被回收了,由于ThreadLocalMap
持有ThreadLocal
的弱引用,即使没有手动删除,ThreadLocal
也会被回收。value
在下一次ThreadLocalMap
调用set
,get
的时候会被清除。
spring data jpa如何join
Spring 用到哪些设计模式
轻量级锁,偏向锁
4个线程一个一个处理
为什么跳槽
g1
可重入体现在哪里
redis设计
jdk工具
说说spring cloud