文章目录
-
java中线程的6种状态
-
静态变量、实例变量、局部变量的线程安全问题:
-
为什么会出现线程安全问题:在多个线程对共享资源读写操作,就会出现问题
-
synchronized 锁升级:
-
sleep 和 wait 的区别
-
park和unpark
是unsafe中的方法,当调用park时,该线程会去一下计数,为0则将线程阻塞,当unpark会将计数设置为1,park住的这个线程就会恢复。 -
JMM:
java内存模型,它定义了对主存中变量的访问规则吧,它定义了两种内存:工作内存和主存,主存存储了共享变量,每个线程都是先到主存中读到工作内存再去操作共享变量,操作完成再写回主存,不能直接操作主存,为了实现线程间的通信,保证可见性和防止指令重排可以使用volatile。 -
什么是指令重排:
-
volatile 原理:
volatile它底层是用读写屏障来实现的,在volatile修饰的变量后面加入写屏障同步到主存中,在读volatile修饰的变量之前它会加入读屏障从主存中去读,保证读到的是最新的数据 ,正因为这样解决了线程间共享变量的可见性问题,有序性的话用volatile修饰就禁用掉了指令重排,解决了有序性。 -
什么是CAS?
-
string是线程安全的吗?
-
final 原理:写屏障
-
线程池:
之前写过一个线程池的小案例: