
Java多线程
深蓝色的忧伤
百度糯米团购
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java多线程编程——同步器CyclicBarrier(二)
在实际应用中,有时候需要多个线程同时工作以完成同一件事情,而且在完成过程中,往往会等待其他线程都完成某一阶段后再执行,等所有线程都到达某一个阶段后再统一执行。 比如有几个旅行团需要途经深圳、广州、韶关、长沙最后到达武汉。旅行团中有自驾游的,有徒步的,有乘坐旅游大巴的;这些旅行团同时出发,并且每到一个目的地,都要等待其他旅行团到达此地后再同时出发,直到都到达终点站武汉。 这时候Cyc...原创 2011-03-29 00:44:05 · 130 阅读 · 0 评论 -
java多线程编程——同步器Semaphore(一)
网上关于解释Semaphore用法的代码很多,但是都不能运行或者运行错误。下面的例子是经过我自己运行过的。而且我详细的注释了下各个变量和方法的用途。希望对大家有用,一起研究。[code="java"]import java.util.concurrent.Semaphore;/** * * @author Administrator * */public class...原创 2011-03-29 16:54:20 · 106 阅读 · 0 评论 -
java多线程编程——同步器CountDownLatch(三)
CountDownLatch主要起倒计时计数器作用,它主要有两个方法await()和countDown()。一旦某个线程调用await()方法,那么该线程就会阻塞,等待CountDownLatch计数器倒计时归零,需要注意的是尽管线程调用await()方法后会阻塞,但是CountDownLatch允许别的线程调用countDown()方法,将计数器减一。也就是说调用计时器的线程阻塞后,可以利用别的...原创 2011-03-30 22:35:49 · 137 阅读 · 0 评论 -
线程中各种唤醒、等待、睡眠方法之间的区别
[b]一、notify()方法和notifyAll()方法的区别[/b]notifyAll使所有原来在该对象上等待被notify的线程统统退出wait的状态,变成等待该对象上的锁,一旦该对象被解锁,他们就会去竞争。notify则文明得多他只是选择一个wait状态线程进行通知,并使它获得该对象上的锁,但不惊动其他同样在等待被该对象notify的线程们,当第一个线程运行完毕以后释放对象上的...原创 2011-04-01 16:44:08 · 664 阅读 · 0 评论 -
java多线程编程——同步器Exchanger(四)
类java.util.concurrent.Exchanger提供了一个同步点,在这个同步点,一对线程可以交换数据。每个线程通过exchange()方法的入口提供数据给他的伙伴线程,并接收他的伙伴线程提供的数据,并返回。当在运行不对称的活动时很有用,比如当一个线程填充了buffer,另一个线程从buffer中消费数据的时候,这两个线程可以用Exchanger来交换数据。当两个线程通过Excha...原创 2011-04-06 11:56:35 · 129 阅读 · 0 评论 -
java多线程编程——同步器Future和FutureTask(五)
public interface FutureFuture 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。计算完成后只能使用 get 方法来获取结果,如有必要,计算完成前可以阻塞此方法。取消则由 cancel 方法来执行。还提供了其他方法,以确定任务是正常完成还是被取消了。一旦计算完成,就不能再取消计算。如果为了可取消性而使用 Future 但又不提供可用...原创 2011-04-08 09:45:26 · 179 阅读 · 0 评论 -
java多线程编程——显示锁ReentrantLock(一)
[code="java"]package test;/** * 内部锁 * * @author Administrator * */public class SynchronizedBenchmarkDemo implements Counter { private long count = 0; @Override public long getV...原创 2011-04-08 18:05:53 · 106 阅读 · 0 评论 -
Java线程中sleep()、wait()和notify()和notifyAll()、yield()、join()等方法的用法和区别
[b]Java线程中sleep()、wait()和notify()和notifyAll()、suspend和resume()、yield()、join()、interrupt()的用法和区别[/b]从操作系统的角度讲,os会维护一个ready queue(就绪的线程队列)。并且在某一时刻cpu只为ready queue中位于队列头部的线程服务。但是当前正在被服务的线程可能觉得cpu的服...原创 2011-11-03 17:19:08 · 494 阅读 · 0 评论