![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
juc
文章平均质量分 93
licux
这个作者很懒,什么都没留下…
展开
-
java volatile 关键字详解
1. 简介volatile 关键字:当多个线程进行操作共享数据时,可以保证内存中的数据可见。相较于 synchronized 是java虚拟机提供的一种较为轻量级的同步策略。主要有以下特性:可见性禁止指令重排注意:3. volatile 不具备“互斥性”4. volatile 不能保证变量的“原子性”2.可见性详解2.1 JMM(java 内存模型) 简介JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念 并不真实存在,它描述的是一组规则原创 2021-12-23 11:31:35 · 494 阅读 · 1 评论 -
blokingQueue详解 及其用法
BlockingQueue,顾名思义,指的是一个阻塞队列。其主要用于生产者-消费者模式,也就是在多线程场景时生产者线程在队列头部添加元素,而消费者线程则在队列尾部消费元素,通过这种方式能够达到将任务的生产和消费进行隔离的目的。BlockingQueue最典型的两个实现是ArrayBlockingQueue和LinkedBlockingQueue。本文首先会讲解BlockingQueue的API的具体使用方式,然后会讲解ArrayBlockingQueue和LinkedBlockingQueue的实现原理,.转载 2020-11-17 14:24:17 · 352 阅读 · 0 评论 -
SynchronizedList和Vector的区别
Vector是java.util包中的一个类。SynchronizedList是java.util.Collections中的一个静态内部类。在多线程的场景中可以直接使用Vector类,也可以使用Collections.synchronizedList(List list)方法来返回一个线程安全的List。那么,到底SynchronizedList和Vector有没有区别,为什么java api要提供这两种线程安全的List的实现方式呢?首先,我们知道Vector和Arraylist都是List.转载 2020-11-14 15:58:32 · 159 阅读 · 0 评论 -
static 和 Volatile 的区别
static也是各个业务方可以去全局修改;volatile是处理多线程锁的替代方案,对应有时需要实时的修改共享资源的变量,被volatile修复的变量的值可以立刻被业务方取得最新的值。不过,猛地感觉,nnd,这不是一样么,static是静态的,所以理论上也可以在不同线程去访问,能访问也就是能修改,所以这里老穆在网上搜了搜 相关的资料,把这个知识点在加强下:变量放在主存区上,使用该变量的每个线程,都将从主存区拷贝一份到自己的工作区上进行操作。volatile, 声明这个字段易变(可能被多个线程使.转载 2020-11-13 15:43:10 · 3731 阅读 · 0 评论