并发三大特性
可见性
当一个线程修改了共享变量的值,其他线程能够看到修改的值。
保证可见性的方式:
- volatile修饰变量
- 内存屏障:Unsafe.getUnsafe().storeFence();
- synchronized
- Lock : LockSupport.unpark(Thread.currentThread());
- 用final修饰变量
- Thread.yield() 发生线程上下文切换,当重新加载上下文的时候会从主存中加载数据
当一个线程修改了共享变量的值,其他线程能够看到修改的值。
保证可见性的方式: