本文内容主要总结自《Java并发编程的艺术》第5章——Java中的锁。 一、AQS AbstractQueuedSynchronizer(简称AQS),队列同步器,是用来构建锁或者其他同步组建的基础框架。该类主要包括: 1、模式,分为共享和独占。 2、volatile int state,用来表示锁 ...
分类:
编程语言 时间:
2016-07-14 02:56:28
阅读次数:
273
第7章:JAVA中的13个原子操作类 第8章:JAVA中的并发工具类 第9章:JAVA中的线程池 ...
分类:
编程语言 时间:
2016-07-06 00:15:53
阅读次数:
132
CAS有两个特点: 1、for循环 2、compareAndSet(可能别的线程先改变然后又重置,此时CAS是成功的,也就是CAS执行的过程中,可能多个线程对此变量做了修改,而不是各个线程互斥的修改) 3、CAS和互斥锁不同,CAS可以多个线程同时执行成功。 Thread.join() 下面是源码。 ...
分类:
编程语言 时间:
2016-07-04 23:34:29
阅读次数:
240
一概述
本文属于《java并发编程的艺术》读书笔记系列,继续第三章java内存模型。
二重排序
2.1数据依赖性
如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:
名称
代码示例
说明
写后读
a = 1;b = a;
写一个变量之后,再读这个位置。
写后写
a = 1...
分类:
编程语言 时间:
2016-06-21 07:43:23
阅读次数:
235
一概述
本文属于《java并发编程的艺术》读书笔记系列,第三章java内存模型第二部分。
二final的内存语义
final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。可以参照之前整理的关键字final。这里作者主要介绍final域的内存语义。
对于final域,编译器和处理器要遵守两个重排序规则:
在构造函数内对一个final域的写入,与随后...
分类:
编程语言 时间:
2016-06-21 07:26:33
阅读次数:
205
1.java编程思想 2.java并发编程实战 3.java并发编程的艺术 4.http://www.infoq.com/cn/author/%E7%A8%8B%E6%99%93%E6%98%8E#文章 5.http://www.infoq.com/cn/author/%E6%96%B9%E8%85 ...
分类:
编程语言 时间:
2016-06-15 15:42:56
阅读次数:
139
本文内容主要总结自《Java并发编程的艺术》第5章——Java中的锁。 一、AQS AbstractQueuedSynchronizer(简称AQS),队列同步器,是用来构建锁或者其他同步组建的基础框架。该类主要包括: 1、模式,分为共享和独占。 2、volatile int state,用来表示锁 ...
分类:
编程语言 时间:
2016-06-13 22:01:11
阅读次数:
269
前言 本文来自方腾飞老师《Java并发编程的艺术》第一章。 并发编程的目的是为了让程序运行得更快,但是并不是启动更多的线程就能让程序最大 限度地并发执行。在进行并发编程时,如果希望通过多线程执行任务让程序运行得更快,会面临非常多的挑战,比如上下文切换的问题、死锁的问题,以及受限于硬 件和软件的资源限 ...
分类:
编程语言 时间:
2016-05-18 17:42:55
阅读次数:
143
转载:http://ifeve.com/volatile/ 作者:方 腾飞 花名清英,并发网(ifeve.com)创始人,畅销书《Java并发编程的艺术》作者,蚂蚁金服技术专家。目前工作于支付宝微贷事业部,关注互联网金融,并发编程和敏捷实践。 Volatile是轻量级的synchronized,它在
分类:
编程语言 时间:
2016-03-05 11:34:57
阅读次数:
222
1.synchronized实现同步的基础 Java中的每个对象都是可以作为锁,具体有3种表现。 1.对于普通同步方法,锁是当前实例对象。 2.对于静态同步方法,锁是当前类的Class对象。 3.对于同步方法块,锁是Synchonized括号里面的配置对象。 当前一个线程试图访问同步代码块时,它首....
分类:
编程语言 时间:
2015-11-16 19:26:28
阅读次数:
117