Fork me on GitHub
夸克的博客


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

并发编程——CopyOnWrite容器

发表于 2018-08-04 | 分类于 并发编程 , 并发工具 | 热度: ℃
字数统计: 1,468 | 阅读时长 ≈ 6

前言

Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。CopyOnWrite容器非常有用,可以在非常多的并发场景中使用到。

什么是CopyOnWrite容器

从字面意思上看是写时复制的容器。通俗理解就是我们往一个容器中添加元素时,不直接往容器中添加,而是先将容器copy,复制出一个新的容器,然后新的容器里添加元素,添加完新的元素之后,再将原容器的引用指向新的容器。这样做的好处是我们可以对CopyOnWrite容器进行并发的读,但不需要加锁,因为当前在读的容器中不会添加新的元素,运用一种读写分离容器的思想。

阅读全文 »

并发编程——线程基础(一)

发表于 2018-08-02 | 分类于 并发编程 , 并发基础 | 热度: ℃
字数统计: 4,289 | 阅读时长 ≈ 16

线程是Java学习过程中比较难理解的一part,所以要好好打下基础,之后也会对juc包等其他并发编知识去做一个具体的原理性的学习。

一些概念

一、并发与并行

  • 并发:同一个时间间隔内做很多件事情;并行:同一个时刻同时做多件事情。
  • 其实对于这句话可以这样理解:并发是两个任务可以在重叠的时间段内启动、运行和完成。并行是任务在同一时间运行,例如,在多核处理器上,并发是独立执行过程的组合,而并行是同时执行的。并发更像是操作系统用线程模型抽象之后站在线程的角度上看到的任务的”同时“执行。

二、临界区

  • 表示一种公有区域或者公有数据,但是每一次只有一个线程使用,其他线程想使用必须等待。进程在访问资源的时候必须经过这些步骤:
    【进程】–>【进入区(申请资源)】–>【临界区】–>【退出区(释放资源)】
    阅读全文 »

设计模式——策略模式

发表于 2018-08-02 | 分类于 设计模式 | 热度: ℃
字数统计: 1,266 | 阅读时长 ≈ 6

策略模式

  • 定义一系列的算法,把每一个算法封装起来,并且使它们可以相互替换。这个模式中使得各个算法可以独立于使用它的客户而变化。
    阅读全文 »

orika转换bean的字段丢失

发表于 2018-08-02 | 分类于 bug记录 | 热度: ℃
字数统计: 172 | 阅读时长 ≈ 1

背景

  • 用orika对象转换工具去转换list的时候,发现只去完整转了list的第一条数据,但是后边的数据都没有将字段全部映射上去。
    阅读全文 »
1…1112
夸克

夸克

愿赌服输

114 日志
32 分类
121 标签
GitHub E-Mail csdn
© 2022 夸克 | Site words total count: 168.9k
|
主题 — NexT.Muse v5.1.4
博客全站共168.9k字

载入天数...载入时分秒...