码迷,mamicode.com
首页 > 其他好文 > 详细

并发编程 20—— 原子变量和非阻塞同步机制

时间:2015-03-04 18:47:19      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

并发编程 01—— ConcurrentHashMap

并发编程 02—— 阻塞队列和生产者-消费者模式

并发编程 03—— 闭锁CountDownLatch 与 栅栏CyclicBarrier

并发编程 04—— Callable和Future

并发编程 05—— CompletionService : Executor 和 BlockingQueue

并发编程 06—— 任务取消

并发编程 07—— 任务取消 之 中断

并发编程 08—— 任务取消 之 停止基于线程的服务

并发编程 09—— 任务取消 之 关闭 ExecutorService

并发编程 10—— 任务取消 之 “毒丸”对象

并发编程 11—— 任务取消与关闭 之 shutdownNow 的局限性

并发编程 12—— 线程池的使用 之 配置ThreadPoolExecutor 和 饱和策略

并发编程 13—— 线程池 之 整体架构

并发编程 14—— 线程池 之 原理一

并发编程 15—— 线程池 之 原理二

并发编程 16—— Lock

并发编程 17—— 使用内置条件队列实现简单的有界缓存

并发编程 18—— 显式的Conditon 对象

并发编程 19—— AbstractQueuedSynchronizer 深入分析

并发编程 20—— 原子变量和非阻塞同步机制

 

概述

第1部分 锁的劣势

第2部分 

参考

 

第1部分 锁的劣势

  java传统上是使用锁来实现线程间的同步。每一个object都有一个内部锁(intrinsic lock),关键字synchronized实现了锁的互斥。方法Object.wait主动的放弃锁,而方法Object.notify(All)则用来唤醒waiting中的线程。使用synchronized确保线程同步的正确性,但是也容易造成线程的阻塞。

  volatile变量与锁相比是更轻量级的同步机制,但仅仅能保证内存的可见性,而不能用于原子化的操作。++i 看起来是原子的,而实际上却是取当前值,自增加一,然后回写更新。

 

并发编程 20—— 原子变量和非阻塞同步机制

标签:

原文地址:http://www.cnblogs.com/xingele0917/p/4313955.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!