用法解释 volatile是变量修饰符,只能用来修饰变量。 volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。 原理解释 Java使用一个主 ...
分类:
其他好文 时间:
2016-07-14 21:33:00
阅读次数:
160
首先,需要设置最大内存限制maxmemory 100mb选择策略maxmemory-policy noeviction解释:
noeviction:默认策略,不淘汰,如果内存已满,添加数据是报错。
allkeys-lru:在所有键中,选取最近最少使用的数据抛弃。
volatile-lru:在设置了过期时间的所有键中,选取最近最少使用的数据抛弃。
allkeys-random: 在所有键中,随...
分类:
其他好文 时间:
2016-07-14 15:43:56
阅读次数:
145
本文内容主要总结自《Java并发编程的艺术》第5章——Java中的锁。 一、AQS AbstractQueuedSynchronizer(简称AQS),队列同步器,是用来构建锁或者其他同步组建的基础框架。该类主要包括: 1、模式,分为共享和独占。 2、volatile int state,用来表示锁 ...
分类:
编程语言 时间:
2016-07-14 02:56:28
阅读次数:
273
原文出处:http://www.ibm.com/developerworks/cn/java/j-jtp06197.html volatile 变量使用指南 原文出处:http://www.ibm.com/developerworks/cn/java/j-jtp06197.html volatile ...
分类:
编程语言 时间:
2016-07-11 00:44:06
阅读次数:
152
Java提供的原子类是靠sun基于CAS实现的,CAS是一种乐观锁。关于乐观锁与悲观锁。 原子变量类相当于一种泛化的volatile变量,能够支持原子的和有条件的读-改-写操作。AtomicInteger表示一个int类型的值,并提供了get和set方法,这些Volatile类型的int变量在读取和 ...
分类:
编程语言 时间:
2016-07-10 15:26:34
阅读次数:
290
一、基本概念 先补充一下概念:Java并发中的可见性与原子性 可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制。 可见性, ...
分类:
编程语言 时间:
2016-07-08 23:21:30
阅读次数:
260
这是美团一面面试官的一个问题,后来发现这是一道面试常见题,怪自己没有准备充分:i++;在多线程环境下是否存在问题?当时回答存在,接着问,那怎么解决?。。。好吧,我说加锁或者synchronized同步方法。接着问,那有没有更好的方法? 经过一番百度、谷歌,还可以用AtomicInteger这个类,这 ...
分类:
编程语言 时间:
2016-07-08 13:41:49
阅读次数:
185
1、核心原理是分段加锁 2、Map->Sergent[](使用的是ReentrantLock的非公平模式)->HashEntry[] 3、get操作使用volatile进行了无锁化设计,需要分析下为什么? 4、put操作是串行的,加锁了。 5、分析下hash算法 ...
分类:
其他好文 时间:
2016-07-03 17:23:24
阅读次数:
109
线程基础知识系列(四)线程的同步2:线程的notify-wait通信机制,以及Condition条件变量线程基础知识系列(三)线程的同步:同步控制,锁及synchronized线程基础知识系列(二)线程的管理:线程的状态,控制,休眠,Interrupt,yield等线程基础知识系列(一)线程的创建和启动:线程..
分类:
编程语言 时间:
2016-07-03 15:59:40
阅读次数:
219
http://elf8848.iteye.com/blog/1731274 AHCI: NCQ技术,600MB/S,一个队列,每个队列32个指令 NVME:65000个队列,每个队列65000指令,3.2GB/S NVMe是什么? 2011年时,Non-Volatile Memory Express ...
分类:
其他好文 时间:
2016-07-01 22:47:01
阅读次数:
567