
Java-concurrence
文章平均质量分 90
iteye_9192
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
重排序 初闻 volatile and JMM
参考深入理解Java内存模型 《深入理解Java内存模型》读书总结 1.重排序是怎么一回事? - 编译器排序 和 运行期重排序 - 访问一个程序变量(对象实例字段,类静态字段和数组元素)可能会使用不同的顺序执行, 而不是程序语义所指定的顺序执行。编译器能够自由的以优化的名义去改变指令顺序。 如果一个线程写 入值到字段a,然后写入值到字段b,而且b的值不...原创 2015-04-10 20:16:43 · 112 阅读 · 0 评论 -
用AtomicStampedReference解决ABA问题(转)
原文 : http://blog.hesey.net/2011/09/resolve-aba-by-atomicstampedreference.html 在运用CAS做Lock-Free操作中有一个经典的ABA问题: 线程1准备用CAS将变量的值由A替换为B,在此之前,线程2将变量的值由A替换为C,又由C替换为A,然后线程1执行CAS时发现变量的值仍然为A,所以CAS成功。但实际上这时的现...原创 2015-04-19 15:36:40 · 266 阅读 · 0 评论 -
Concurrent的实现
来源: 深入理解Java内存模型(五)——锁 java的CAS同时具有 volatile 读和volatile写的内存语义, 因此Java线程之间的通信现在有了下面四种方式: 线程写volatile变量,随后B线程读这个volatile变量。 线程写volatile变量,随后B线程用CAS更新这个volatile变量。 线程用CAS更新一个volatile变量,随后...原创 2015-04-19 14:11:09 · 144 阅读 · 0 评论 -
FutureTask
参考 :Runnable、Callable、Executor、Future、FutureTask关系解读 Future和FutureTask 一个很好的例子 , /** * 通过简单的测试程序来试验Runnable、Callable通过Executor来调度的时候与Future的关系 */ package com.hadoop.thread; imp...原创 2015-04-19 11:42:55 · 111 阅读 · 0 评论 -
AQS
谢谢原作者 : singleAnt,写的非常好【java并发】juc高级锁机制探讨 1. Java中 的高级锁 : RentrantLock :// 可重入的锁 ,它是一种独占锁 , 只能有一个对象拥有该锁,区别于synchronize,可中断 ,可定时,可公平的获得锁 RentrantReadWriteLock : // 可重入的读写锁,多个线程可以统一同时读,读是...原创 2015-04-19 11:08:45 · 228 阅读 · 0 评论 -
CountDownLatch and CyclicBarrier
一个 闩 , 一个 屏障 ,都是障碍物!只要达到特定条件时,才能移除,继续同行! CountDownLatch ? - 闭锁,管理一个和多个线程,只有满足某个条件才能运行!就像一个闩一样,如果你没有满足我的条件,那么就别想出去! 用给定的计数 (count)初始化 CountDownLatch。由于调用了 countDown() 方法(count--),所以在当前计...原创 2015-04-18 22:48:47 · 116 阅读 · 0 评论 -
ReentrantReadWriteLock
感谢:多线程基础总结八--ReentrantReadWriteLock ReentReadWriteLock // 可重入的读/写锁 - 它和ReentrantLock都是单独的实现,不存在继承,实现的关系! - 它分读锁 和 写锁两部分!readLock() 和 writeLock() - 多个线程可以同时对一块资源进行读!但是,这是就不能进行写了!排斥写 ,...原创 2015-04-13 22:04:23 · 148 阅读 · 0 评论 -
可重入锁 ReentrantLock
推荐 : ReentrantLock与synchronized 1. 什么是可重入锁? - “就是可以重新获得锁!”可重入的意思是线程可以重复获得它已经持有的锁。Java的synchronized块是可重入的。 看下面代码 : public class Reentrant{ public synchronized outer(){ inner(); } pu...原创 2015-04-13 20:22:14 · 213 阅读 · 0 评论 -
concurrentHashMap and Hashtable简单总结
参考 : 探索 ConcurrentHashMap 高并发性的实现机制 这两个类都是线程安全的,但是 Hashtable 是通过给每一个方法加锁,(synchronized) ,这样每次操作都会锁住整个表! 看源码 : public synchronized V get(Object key) { Entry tab[] = table; ...原创 2015-04-11 13:37:22 · 287 阅读 · 0 评论 -
阻塞队列
参考 聊聊并发(七)——Java中的阻塞队列 阻塞队列(BlockingQueue) 1. 阻塞队列很高级吗? - 不要畏惧!,对个线程访问阻塞队列的共享资源的时候,严格按照队列的规矩,先进先出! - 队列满了,就阻塞,队列空了,也阻塞!这样在,生产者-消费者模型中,可以用一个阻塞队列来 - 存放生产的(共享资源)! - 好处; 多线程操作共同的队列时不需要额...原创 2015-04-11 11:23:16 · 72 阅读 · 0 评论 -
ThreadPoolExecutor 原理
来源 :【java并发】juc Executor框架详解 Java线程池架构原理和源码解析(ThreadPoolExecutor) 1. Executor整体架构: Executor 接口定义了最基本的 execute 方法,用于接收用户提交任务。 ExecutorService 定义了线程池终止和创建及提交 futureTask 任务支持的方法。...原创 2015-04-19 18:44:52 · 362 阅读 · 0 评论