01线程的本质(操作系统与CPU是如何执行线程的)
1.进程是资源分配的基本单位。线程是运行的基本单位,是调度的基本单位。
2.线程越多效率就越高?不是 线程切换消耗资源 线程切换是个很重的操作。
3.hotspot模型 -->1:1 jvm起一个线程对应操作系统起一个线程。锁的争抢,资源同步全都扔给了操作系统
10深入分析volatile的实现原理
。。。
Volatile :1.保持线程可见性(一个线程修改,另一个线程立马可见) 2.禁止重排序
1.保持线程可见性
public class T01_ThreadVisibility {
private static volatile boolean running = true;//running值放在内存中
public static void main(String[] args) throws InterruptedException {
new Thread(()->{//第一个线程把running读进去,缓存里。
while (running){
//do sth
}
System.out.println("end");
},"server").start();
Thread.sleep(1000);
running = false;//另外一个线程读到缓存里,改为false,写回主存。但是上面那个线程只读它本地的缓存
}
}