- 博客(3)
- 收藏
- 关注
原创 Java线程(Thread)中join、sleep、interrupt、yield等方法总结
Thread类的常用方法joinjoin我们在T1线程的环境下,调用T2线程的join方法,那么T1线程将会等待T2线程结束后继续执行。代码如下:public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(() -> { try { Thread.sleep(1000); } catch (Interrupt
2020-06-13 17:16:17 453
原创 synchronized和volatile关键字与内存可见性的关系
目录内存可见性单线程环境下合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入内存可见性单线程环境下public class NoVisible { private static boolean ready; private
2020-06-07 15:44:46 327
原创 多线程环境下,操作long和double类型竟然不安全!
JAVA内存模型要求,变量的读取和写入必须是原子操作,但对于非volatile类型的long和double变量,JVM允许将64位的读操作或写操作分解成两个32位的操作。当读取一个非volatile类型的long时,如果读操作和写操作在不同的线程中执行,那么很可能读取到某个值的高32位和另一个值的低32位。就是说,在多线程环境下,使用共享且可变的long和double变量是不安全的,必须用关键字volatile声明或者用锁保护起来。来源于<<Java并发编程实战>>...
2020-06-07 15:37:41 1232 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人