第一站:(深圳) 1. 多个线程同时读写,读线程的数量远远?于写线程,你认为应该如何解决 并发的问题?你会选择加什么样的锁? 2. JAVA的AQS是否了解,它是?嘛的? 3. 除了synchronized关键字之外,你是怎么来保障线程安全的? 4. 什么时候需要加volatile关键字?它能保证线 ...
分类:
其他好文 时间:
2018-05-30 19:13:39
阅读次数:
358
「 天行健,君子以自强不息。地势坤,君子以厚德载物。」———《易经》volatile 变量,在上一篇文章中已经有简单提及相关概念和用法,这一篇主要对 Volatile 变量的特性进行源码验证。验证它的涉及到的三个特性:可见性指令重排序非原子性volatile 之可见性验证上一篇文章中,讲到 volatile 变量通常被当做状态标记使用。其中典型的应用是,检查标记状态,以确定是否退出循环。下面我们直
分类:
编程语言 时间:
2018-05-29 22:50:24
阅读次数:
275
在原子变量类(例如java.util.concurrent.atomic中的AtomicXxx)中使用了这些底层的JVM支持为数字类型和引用类型提供了一种高效的CAS操作,而在java.util.concurrent中的大多数类在实现时则直接或间接的使用了这些原子变量类。 五、原子变量类 共有12个 ...
分类:
其他好文 时间:
2018-05-29 18:57:27
阅读次数:
130
一、锁锁是一种悲观的机制。为多线程提供了互斥的访问机制。多个线程同时竞争锁时,没获得锁的线程将会被挂起(智能的JVM会根据之前获取锁操作中对锁的持有时间长短来判断是使线程挂起还是自旋) 锁的劣势:1.未竞争到锁的线程挂起后再恢复时,会进行上下文的切换,开销大。2.当一个线程正在等待锁时,它不能干任何 ...
分类:
其他好文 时间:
2018-05-29 18:49:36
阅读次数:
219
synchronized还可以应用在静态方法上,如果这么写,则代表的是对当前.java文件对应的Class类加锁。看一下例子,注意一下printC()并不是一个静态方法: 写三个线程分别调用这三个方法: 写个main函数启动这三个线程: 看一下运行结果: 从运行结果来,对printC()方法的调用和 ...
分类:
其他好文 时间:
2018-05-29 17:47:10
阅读次数:
192
AtomicInteger是一个线程安全的类,用来取代Integer在多线程中的使用。 那么AtomicInteger是怎么实现线程安全的呢? 通过查看AtomicInteger的源码可知, 通过申明一个volatile (保证value修改后,在其他线程中可见)类型的变量,再加上unsafe.co ...
分类:
其他好文 时间:
2018-05-29 10:58:30
阅读次数:
129
一般都吧JS的代码放到<script typt=“javascript”></stcipt>标签对儿中间,<script>标签对儿可以放到<head>里面,也可以放到<body>里面。 alert语句: 输出效果: JS语法规则: (1)、JavaScript对换行、缩进、空格不敏感。 备注:每一条 ...
分类:
编程语言 时间:
2018-05-28 20:19:42
阅读次数:
206
对于const变量,人们有个误区,就是认为const是个常量,其实这种说法是不正确的,const本质还是一个变量,只是这个变量被const修饰后成为了只读的变量。const只读变量关于const有几点要注意的:1.const修饰的变量是只读的,本质还是变量。2.const修饰的局部变量在栈上分配空间。3.const修饰的全局变量在全局数据区分配空间。4.const只在编译期有用,在运行期无用。co
分类:
其他好文 时间:
2018-05-27 22:45:52
阅读次数:
195
在Java5.0之前,只有synchronized(内置锁)和volatile. Java5.0后引入了显示锁ReentrantLock. ReentrantLock概况 ReentrantLock是可重入的锁,它不同于内置锁, 它在每次使用都需要显示的加锁和解锁, 而且提供了更高级的特性:公平锁, ...
分类:
其他好文 时间:
2018-05-27 00:57:32
阅读次数:
156
近期看到C++标准中对volatile关键字的定义,发现和java的volatile关键字完全不一样,C++的volatile对并发编程基本没有帮助。网上也看到很多关于volatile的误解,于是决定写这篇文章详细解释一下volatile的作用到底是什么。 ...
分类:
编程语言 时间:
2018-05-26 13:02:21
阅读次数:
284