java.util.concurrent.atomic.AtomicLong类提供了可以被原子地读取和写入的底层long值的操作,并且还包含高级原子操作。 AtomicLong支持基础long类型变量上的原子操作。 它具有获取和设置方法,如在volatile变量上的读取和写入。 也就是说,一个集合与 ...
分类:
其他好文 时间:
2018-06-06 21:42:00
阅读次数:
200
原子属性更新器AtomicReferenceFieldUpdater的使用,AtomicReferenceFieldUpdater是Java原子属性更新器,它能让普通对象的get、set操作变为原子操作,从而避免多线程环境下同步操作,提高程序运行效率。原子属性更新器常用的方法是compareAndS ...
分类:
其他好文 时间:
2018-06-03 21:47:10
阅读次数:
152
原子性 原子是最小单元、不可再分的意思。原子性是指某个操作在获取CPU时间时,要么就给它足够时间,让这个操作执行完,要么就不执行这个操作,执行时不能出现上下文切换(把CPU时间从一个线程分配到另一个线程)。 Java中对变量的读取和赋值都是原子操作,但long、double类型除外,只有使用vola ...
分类:
编程语言 时间:
2018-05-27 12:11:20
阅读次数:
239
根据修改的数据类型,可以将JUC包中的原子操作类可以分为4类。 1. 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ;2. 数组类型: AtomicIntegerArray, AtomicLongArray, AtomicReferenceArray ...
分类:
编程语言 时间:
2018-05-27 12:09:46
阅读次数:
280
线程,线程的定义,线程的四种状态; 多线程,多线程的同步和互斥的几种实现方法,用户模式(原子操作、临界区),内核模式(事件、信号量、互斥量)。 linux下线程同步的三种方法,事件、信号量、互斥量。 进程,进程的定义,进程所拥有的系统资源。 进程间通信的方式,管道,命名管道(FIFO),消息队列,信 ...
分类:
编程语言 时间:
2018-05-25 16:06:48
阅读次数:
220
CAS虽然很高效的解决原子操作,但是CAS仍然存在三大问题。ABA问题,循环时间长开销大和只能保证一个共享变量的原子操作 1. ABA问题。因为CAS需要在操作值的时候检查下值有没有发生变化,如果没有发生变化则更新,但是如果一个值原来是A,变成了B,又变成了A,那么使用CAS进行检查时会发现它的值没 ...
分类:
其他好文 时间:
2018-05-22 12:52:06
阅读次数:
560
分布式锁 分布式锁其实可以理解为:控制分布式系统有序的去对共享资源进行操作,通过互斥来保持一致性。 举个不太恰当的例子:假设共享的资源就是一个房子,里面有各种书,分布式系统就是要进屋看书的人,分布式锁就是保证这个房子只有一个门并且一次只有一个人可以进,而且门只有一把钥匙。然后许多人要去看书,可以,排 ...
分类:
其他好文 时间:
2018-05-16 20:44:09
阅读次数:
127
4.1 缓存 buff 说明 一般设置缓存 buff 的大小是由一定的规律的,就是根据磁盘块的大小来定。 Linux下输入命令: df -k 查看磁盘 可以用命令查看下 /dev/sda1 磁盘的磁盘说明 Block size 就是磁盘块的大小,这个磁盘块的大小为 4M ,那么就可以设置缓存 buf ...
分类:
其他好文 时间:
2018-05-13 21:10:18
阅读次数:
182
Redis在2.6推出了脚本功能,允许开发者使用Lua语言编写脚本传到Redis中执行。使用脚本的好处如下: 1.减少网络开销:本来5次网络请求的操作,可以用一个请求完成,原先5次请求的逻辑放在redis服务器上完成。使用脚本,减少了网络往返时延。 2.原子操作:Redis会将整个脚本作为一个整体执 ...
分类:
其他好文 时间:
2018-05-12 02:49:54
阅读次数:
142
Java内存模型JMM java内存模型定义 上一遍文章我们讲到了CPU缓存一致性以及内存屏障问题。那么Java作为一个跨平台的语言,它的实现要面对不同的底层硬件系统,设计一个中间层模型来屏蔽底层的硬件差异,给上层的开发者一个一致的使用接口。Java内存模型就是这样一个中间层的模型,它为程序员屏蔽了 ...
分类:
编程语言 时间:
2018-05-08 19:33:40
阅读次数:
209