Java多线程编程-(1)-线程安全和锁Synchronized概念 Java多线程编程-(2)-可重入锁以及Synchronized的其他基本特性 Java多线程编程-(3)-从一个错误的双重校验锁代码谈一下volatile关键字 Java多线程编程-(4)-线程本地ThreadLocal的介绍与 ...
分类:
编程语言 时间:
2018-07-28 16:42:19
阅读次数:
197
1、volatile可以保证可见性,不能保证一致性,但是与cas操作结合在实现并发上性能很不错,java并发包下不少类都有这种实现方式。 2、相比synchronized执行成本更低,因为它不会引起线程上下文的切换和调度。 3、volatile实现可见性原理: 声明为volatile后,编译成汇编指 ...
分类:
其他好文 时间:
2018-07-26 13:09:34
阅读次数:
111
引言 谈到volatile关键字,大多数开发者都有一定了解,可以说是开发者非常熟悉,深入之后又非常陌生的一个关键字。相当于轻量的synchronized,也叫轻量级锁,与synchronized相比性能上开销较少,同时又具备了可见性、有序性以及部分原子性,是Java并发需中非常重要的一个关键字。这篇 ...
分类:
编程语言 时间:
2018-07-26 01:06:26
阅读次数:
171
一、java内存模型 1.java内存模型 程序运行过程中的临时数据是存放在主存(物理内存)中,但是现代计算机CPU的运算能力和速度非常的高效,从内存中读取和写入数据的速度跟不上CPU的处理速度,在这种情况下,CPU高速缓存应运而生。基于高速缓存的存储交互很好地解决了处理器与内存的速度矛盾,但是出现 ...
分类:
编程语言 时间:
2018-07-25 20:46:46
阅读次数:
171
在平时编码中,我们可能只注意了这些static,final,volatile等关键字的使用,忽略了他们的细节,更深层次的意义。 本文总结了Java中所有常见的关键字以及一些例子。 static 关键字 概述: 当static修饰类的属性或者方法时,那么就可以在没有创建对象的情况下使用该属性或方法。 ...
分类:
编程语言 时间:
2018-07-22 22:27:01
阅读次数:
123
一 引言 听说在Java 5之前volatile关键字备受争议,所以本文也不讨论1.5版本之前的volatile。本文主要针对1.5后即JSR-133针对volatile做了强化后的了解。 二 volatile的特性 开门见山,volatile变量自身具有以下特性: 可见性(最重要的特性)。对一个v ...
分类:
编程语言 时间:
2018-07-22 17:09:22
阅读次数:
206
一 引言 在说volatile的内存语义时,讲过这样一句话:想要理解透volatile特性有一个很好的方法,就是把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步。所以其实锁的释放和获取与volatile的写和读具有相同的内存语义。 二 锁的释放-获取建立的happ ...
分类:
编程语言 时间:
2018-07-22 17:08:22
阅读次数:
171
在学完volatile和CAS之后,近几天在撸AbstractQueuedSynchronizer(AQS)的源代码,很多并发工具都是基于AQS来实现的,这也是并发专家Doug Lea的初衷,通过写一个这样的基础工具来提高j.u.c的灵活性。具体可以看这篇论文的一段原文,我摘录一下: As is w ...
分类:
其他好文 时间:
2018-07-22 16:56:49
阅读次数:
167
马士兵java并发编程的代码,照抄过来,做个记录。 一、分析下面面试题 分析: 不能完成这个功能; 添加volatile关键字,修改为如下: 二、添加volatile: /** * 曾经的面试题:(淘宝?) * 实现一个容器,提供两个方法,add,size * 写两个线程,线程1添加10个元素到容器 ...
分类:
编程语言 时间:
2018-07-21 11:38:51
阅读次数:
211
Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来 ...
分类:
编程语言 时间:
2018-07-20 15:20:27
阅读次数:
133