![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试
文章平均质量分 84
阿尔法小师妹
这个作者很懒,什么都没留下…
展开
-
JMM与volatile的底层工作原理
在了解volatile之前,先认识一下JMM内存模型和并发编程的三大特性!1. JMM内存模型 Java内存模型(Java Memory Model简称JMM)是一种抽象的概念,并不真实存在,它描述的是一组规则或规范。 与JVM内存模型不同的是,JMM规定所有变量都存储在主内存,主内存是共享内存区域,所有的线程都可以访问。当线程有对这个变量有操作时,必须把这个变量从主内存复制一份到自己的工作空间中进行操作,操作完成后,再把变量写回主内存,不能直接操作主内存的变量。不同的线...转载 2021-08-18 15:26:50 · 106 阅读 · 0 评论 -
volatile不保证原子性及其解决办法
1.volatile不保证原子性既然它可以保证修改的值立即能更新到主存,其他线程也会捕捉到被修改后的值,那么为什么不能保证原子性呢?首先需要了解的是,Java中只有对基本类型变量的赋值和读取是原子操作,如i = 1的赋值操作,但是像j = i或者i++这样的操作都不是原子操作,因为他们都进行了多次原子操作,比如先读取i的值,再将i的值赋值给j,两个原子操作加起来就不是原子操作了。所以,如果一个变量被volatile修饰了,那么肯定可以保证每次读取这个变量值的时候得到的值是最新的,但是一旦需要对变量原创 2021-08-18 16:15:22 · 1781 阅读 · 0 评论 -
算法大集锦
1.说一下什么是二分法?使用二分法时需要注意什么?如何用代码实现? 二分法查找(Binary Search)也称折半查找,是指当每次查询时,将数据分为前后两部分,再用中值和待搜索的值进行比较,如果搜索的值大于中值,则使用同样的方式(二分法)向后搜索,反之则向前搜索,直到搜索结束为止。 二分法使用的时候需要注意:二分法只适用于有序的数据,也就是说,数据必须是从小到大,或是从大到小排序的。时间复杂度是O(logn)执行源码:@Servicepublic class TestService {原创 2021-08-17 19:01:29 · 112 阅读 · 0 评论