一次外企面试经历

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

猜你喜欢

转载自www.cnblogs.com/silyvin/p/11368213.html