摘要: 先说结论,在java中,for(;;)和while(true)在性能上没有什么区别 那么为什么会有很多for(;;)这种奇怪的写法呢,其实在早期的一些语言中,这两者是有区别的。 比如在C中,如果没有通过include引入某些头文件的话,是不会有TRUE,FALSE等等这些常量的,而如果写出while 阅读全文
posted @ 2020-11-18 16:59 xyyyn 阅读(124) 评论(0) 推荐(0) 编辑
摘要: (目录) 什么是原子性问题 原子性是指在一个操作中,cpu不可以在中途暂停然后再调度,要么一次执行完成,要么就不执行。 在Java中当我们讨论一个操作具有原子性问题,是一般就是指这个操作会被线程的随机调度打断而产生的一系列的问题。 举例说明一下 我们先来看一些例子,来了解什么是原子性的操作 a = 阅读全文
posted @ 2020-11-18 16:58 xyyyn 阅读(371) 评论(0) 推荐(0) 编辑
摘要: (目录) 什么是内存屏障 在转载的大佬的文章既生synchronized,何生volatile中,提到了synchronized与volatile的底层实现原理的不同,synchronized本质上是一种阻塞锁,而volatile则是使用了内存屏障来实现。所以在这里对内存屏障进行一个简单的介绍 为了 阅读全文
posted @ 2020-11-18 16:57 xyyyn 阅读(588) 评论(0) 推荐(0) 编辑
摘要: (目录) happen-before是什么 happen-before出现的原因 为了明确定义多线程场景下重排序的问题,Java引入了JMM(Java Memory Model),也就是Java内存模型。如果有了重排序就会出现原子性,可见性,有序性的问题,但是性能会提升。所以Java内存模型不是真实 阅读全文
posted @ 2020-11-18 16:55 xyyyn 阅读(436) 评论(0) 推荐(0) 编辑