我有一个缓存,该缓存是使用Simeple HashMap实现的。喜欢 -

HashMap cache = new HashMap();

大部分时间都使用此缓存从中读取值。我有另一个重新加载缓存的方法,在这个方法的内部,我基本上创建了一个新的缓存,然后分配了引用。据我了解,对象引用的分配是Java中的Atomic。

public class myClass {

private HashMap cache = null;

public void init() {

refreshCache();

}

// this method can be called occasionally to update the cache.

public void refreshCache() {

HashMap newcache = new HashMap();

// code to fill up the new cache

// and then finally

cache = newcache; //assign the old cache to the new one in Atomic way

}

}

我了解,如果我不将缓存声明为易失性,则其他线程将无法看到更改,但是对于我的用例而言,将缓存中的更改传播到其他线程不是时间紧迫的,它们可以继续使用旧缓存延长时间。

您看到任何线程问题吗?考虑到许多线程正在从高速缓存中读取数据,并且仅在重新加载高速缓存时才读取。

编辑-我的主要困惑是我不必在这里使用AtomicReference,因为赋值操作本身是原子的?

编辑-

我知道要使排序正确,我应该将缓存标记为易失性。但是,如果将refreshCache方法标记为已同步,则不必使高速缓存为易失性,因为已同步块将同时处理顺序和可见性?

java 线程分配_Java多线程原子引用分配相关推荐

  1. java线程钥匙_Java多线程并发编程/锁的理解

    一.前言 最近项目遇到多线程并发的情景(并发抢单&恢复库存并行),代码在正常情况下运行没有什么问题,在高并发压测下会出现:库存超发/总库存与sku库存对不上等各种问题. 在运用了 限流/加锁等 ...

  2. java线程池_Java多线程并发:线程基本方法+线程池原理+阻塞队列原理技术分享...

    线程基本方法有哪些? 线程相关的基本方法有 wait,notify,notifyAll,sleep,join,yield 等. 线程等待(wait) 调用该方法的线程进入 WAITING 状态,只有等 ...

  3. java线程基础_Java多线程基础

    前言 在我们工作和学习的过程中,Java线程我们或多或少的都会用到,但是在使用的过程上并不是很顺利,会遇到各种各样的坑,这里我通过讲解Thread类中的核心方法,以求重点掌握以下关键技术点: 线程的启 ...

  4. java线程入门_java多线程快速入门(一)

    1.什么是进程 比如:QQ.QQ游戏.eclipse都是进程,可以通过任务管理器查看进程 2.进程和线程区别 线程是进程的一部分,一个进程可以包含多个线程,一个线程只能属于一个进程 进程是所有线程的集 ...

  5. java线程 锁_Java多线程(二) 多线程的锁机制

    当两条线程同时访问一个类的时候,可能会带来一些问题.并发线程重入可能会带来内存泄漏.程序不可控等等.不管是线程间的通讯还是线程共享数据都需要使用Java的锁机制控制并发代码产生的问题.本篇总结主要著名 ...

  6. java线程设计模式_JAVA多线程设计模式

    漫谈UML UML 类图 类和层次结构的关系 接口与实现 聚合 访问控制 类间的关联性 顺序图 处理流程和对象间的协调 时序图 Introduction 1 Java语言的线程 Java语言的线程 何 ...

  7. java 线程简介_java多线程介绍

    java多线程介绍 多线程的基本实现 进程指运行中的程序,每个进程都会分配一个内存空间,一个进程中存在多个线程,启动一个JAVA虚拟机,就是打开个一个进程,一个进程有多个线程,当多个线程同时进行,就叫 ...

  8. java 线程 组成_java多线程

    一:基本知识点 1.1线程与进程区别: 1.进程是资源分配的最小单位,线程是CPU调度的最小单位 2.一个进程由一个或多个线程组成 3.进程之间相互独立,每个进程都有独立的代码和数据空间,但同一进程下 ...

  9. java线程 教程_Java多线程系列教程

    Java多线程系列教程 多线程是Java中不可避免的一个重要主体.从本章开始,我们将展开对多线程的学习.接下来的内容是对Java多线程内容的讲解,涉及到的内容包括,Object类中的wait(), n ...

最新文章

  1. java基础--日期--练习集锦
  2. python新闻推荐系统_python实现推荐系统(一)
  3. 使用SAP C4C rule editor动态控制UI上某个按钮是否显示 1
  4. RESTful服务的第三部分:HATEOAS和Richardson成熟度模型
  5. python 裁判文书网_python - 用selenium模拟登陆裁判文书网,系统报错找不到元素。...
  6. 历经7年双11实战,阿里巴巴是如何定义云原生混部调度优先级及服务质量的?
  7. 详解Parcel:快速,零配置web应用打包工具
  8. 数据结构—二叉排序树
  9. gdb调试动态链接so
  10. UVA - 10820欧拉函数的应用
  11. 量子力学对计算机影响,人们对量子力学的理解有误?
  12. 思维导图 · App的商业模式:如何寻找商业化
  13. 计算机excel怎么删除重复项,在Excel中巧妙提示重复输入和删除重复数据
  14. 安装eclipse c++版本neno
  15. 冬天洗衣不动手,这几款智慧洗衣机可以帮到你
  16. Unity打包后的日志
  17. 大学物理/量子物理基础/康普顿效应
  18. Android新机系统要求,原神手机端最低配置要求
  19. 最值得推荐的6个物联网开发平台
  20. 小学计算机输入法主题教研设计,《拼音输入法》教学设计.doc

热门文章

  1. mysql二进制日志被删除无法启动_mysql二进制日志文件出错导致mysql服务无法启动...
  2. 【控制】滑动模型控制(Sliding Mode Control)
  3. 3.3 集束搜索-深度学习第五课《序列模型》-Stanford吴恩达教授
  4. TCL foreach的用法
  5. 【Android工具】最新测试谷歌play耗电情况,各种品牌安装谷歌play方法,GooglePlay...
  6. 基于Quartus II软件FPGA与PC之间的串行通信系统开发(9000+字)
  7. 用系统滚动条实现NumericUpDown的原理
  8. 算法与数据结构之二分查找
  9. 文件描述符fd、文件指针fp和vfork()
  10. Shortest Distance from All Buildings