2012年4月26日
摘要: 下面是一个经典的生产者消费者的例子。假设使用缓冲区存储整数,缓冲区的大小是受限制的。缓冲区提供write(int)方法将一个整数添加到缓冲区,还体统read()方法从缓冲区中读取并删除一个整数。为了同步操作,使用具有两个条件的锁,notEmpty(缓冲区非空)和notFull(缓冲区未满)。当任务相缓冲区添加爱一个int时,如果缓冲区是满的,那么任务将等待notFull状态,当任务从缓冲区总删除一个int时,如果缓冲区是空的,那么任务将等待notEmpty状态。 package LianXi;import java.util.*;import java.util.concurrent.*;i. 阅读全文
posted @ 2012-04-26 22:02 小段段 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 通过保证在临界区上多个线程的相互排斥,线程间可以完全避免竞争状态的发生,但是有时候还是需要线程之间的相互协作。使用条件(Condition)便于线程间通信。一个线程可以指定在某种条件下该做什么。标间是通过调用Lock对象的newCoditionn()方法来实现线程之间的相互通信的。 一旦创建一个条件,就可使用await()、signal()、signalAll()方法来实现线程间通信。await()方法可以让当前线程都处于等待状态,知道条件放生。signal()方法唤醒一个等待的线程,而signalAll()方法唤醒所有等待线程。 假设创建并启动两个任务,一个用来向账户存款,另一个从同一个账. 阅读全文
posted @ 2012-04-26 07:20 小段段 阅读(2793) 评论(0) 推荐(0) 编辑