47、大厂面试题收集
一、volatiel: 轻量级的同步机制,保证可见性,不保证原子性,禁止指令重排
JMM(java内存模型)它要保证:可见性,原子性,有序性
什么是可见性:由于每个线程在操作共享变量的时候,首先把主内存的数据拷贝到自己的工作内存中然后进行修改,修改完成之后把数据写回主内存中,但是写回主内存之后要让其他线程知道主内存的数据发生了改变,这个就是Java内存模型的可见性。

volatiel 不保证原子性:在多线程操作共享资源时,可能会导致写覆盖
指令重排:代码在编译之后的执行顺序可能和自己写的代码执行顺序可能出现不一致

2、什么时CAS:比较并交换

2、ArrayList 线程不安全

ArrayList: 线程不安全,有序集合,在高并发下解决线程不安全的方案:使用Vector、synchronizedList、CopyOnWriteArrayList
3、对象比较:== 和 equals
==: 分两种情况,如果比较的基本数据类型那么比的是变量的值,如果是引用数据类型比的是内存地址
equals方法两种情况,如果表量自己没有重写过equals方法,那么用的是Object 里的equals方法比的是内存地址,如果重写过equals方法那么按照自己的逻辑


浙公网安备 33010602011771号