并发编程
zhangwei217245
永远不给自己下定义,也决不接受别人的定义。
展开
-
Java 多线程同步问题的探究(二、给我一把锁,我能创造一个规矩)
在上一篇中,我们讲到了多线程是如何处理共享资源的,以及保证他们对资源进行互斥访问所依赖的重要机制:对象锁。 本篇中,我们来看一看传统的同步实现方式以及这背后的原理。 很多人都知道,在Java多线程编程中,有一个重要的关键字,synchronized。但是很多人看到这个东西会感到困惑:“都说同步机制是通过对象锁 来实现的,但是这么一个关键字,我也看不出来Java程序锁住了哪个对象阿?“ 没错...2010-03-15 10:31:14 · 113 阅读 · 0 评论 -
Java 多线程同步问题的探究(一、线程的先来后到)
众所周知,在Java多线程编程中,一个非常重要的方面就是线程的同步问题。 关于线程的同步,一般有以下解决方法: 1. 在需要同步的方法的方法签名中加入synchronized关键字。转载注明出处:http://x- spirit.iteye.com/、http: //www.blogjava.net/zhangwei217245/ 2. 使用synchronized块对需要进行同步的...2010-03-15 10:42:19 · 153 阅读 · 0 评论 -
Java 多线程同步问题的探究(三、Lock来了,大家都让开【1. 认识重入锁】)
在上一节中, 我们已经了解了Java多线程编程中常用的关键字synchronized,以及与之相关的对象 锁机制。这一节中,让 我们一起来认识JDK 5中新引入的并发框架中的锁机制。 我想很多购买了《Java程序员面试宝典》之类图书的朋友一定对下面 这个面试题感到非常熟悉: 问:请对比synchronized与java.util.concurrent.locks.Lock 的异同...2010-03-15 22:51:00 · 117 阅读 · 0 评论 -
Java 多线程同步问题的探究(三、Lock来了,大家都让开【2. Fair or Unfair? It is a question...】)...
让我们继续前面有关ReentrantLock的话题。 首先,ReentrantLock有一个带布尔型参数的构造函数,在JDK官方文档中对它是这样描述的: “此类的构造方法接受一个可选的公平 参数。当设置为 true 时,在多个线程的争用下,这些锁倾向于将访问权授予等待时间最长的线程。否则此锁将无法保证任何特定访问顺序。与采用默认设置(使用不公平锁)相比,使用公平锁的程序在许多线程访问时表现为很...2010-03-16 18:02:00 · 138 阅读 · 0 评论 -
Java 多线程同步问题的探究(四、协作,互斥下的协作——Java多线程协作(wait、notify、notifyAll))...
Java监视器支持两种线程:互斥和协作。 前面我们介绍了采用对象锁和重入锁来实现的互斥。这一篇中,我们来看一看线程的协作。 举个例子:有一家汉堡店举办吃汉堡比赛,决赛时有3个顾客来吃,3个厨师来做,一个服务员负责协调汉堡的数量。为了避免浪费,制作好的汉堡被放进一个能装有10个汉堡的长条状容器中,按照先进先出的原则取汉堡。如果容器被装满,则厨师停止做汉堡,如果顾客发现容器内的汉堡吃完了,就可以拍...2010-03-25 14:48:00 · 156 阅读 · 0 评论 -
Java 多线程同步问题的探究(五、你有我有全都有—— ThreadLocal如何解决并发安全性?)...
前面我们介绍了Java当中多个线程抢占一个共享资源的问题。但不论是同步还是重入锁,都不能实实在在的解决资源紧缺的情况,这些方案只是靠制定规则来约束线程的行为,让它们不再拼命的争抢,而不是真正从实质上解决他们对资源的需求。 在JDK 1.2当中,引入了java.lang.ThreadLocal。它为我们提供了一种全新的思路来解决线程并发的问题。但是他的名字难免让我们望文生义:本地线程? 什么是本...2010-04-08 13:38:00 · 407 阅读 · 0 评论