java线程系列
追寻
这个作者很懒,什么都没留下…
展开
-
java线程系列---队列ArrayBlockingQueue
该接口定义了 put 和 take 的阻塞版本,这些不同的类覆盖了生产者-使用者、消息传递、并行任务执行和相关并发设计的大多数常见使用的上下文。例子:利用队列来实现主线程先执行10次,然后子线程执行50次,依次循环下去public class BlockingQueueCommunication {public static void main(String[] args) {原创 2012-07-21 16:45:22 · 996 阅读 · 0 评论 -
java线程系列---类中的定时器Timer
常用的定时用法为:new Timer().schedule(new MyTimerTask(), 2000);表示为:2秒之后执行MyTimerTask里的方法new Timer().schedule(new MyTimerTask(), 2000,1000);表示为:2秒之后执行MyTimerTask里的方法并每隔1秒执行一次具体示例如下:private static原创 2012-04-05 23:04:25 · 1229 阅读 · 0 评论 -
java线程系列---synchronized详解
记下来,很重要。Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问object的原创 2012-04-05 23:09:59 · 1049 阅读 · 1 评论 -
java线程系列---关于线程同步与互斥问题
例如:子线程运行10次,然后主线程运行100次,按照这样循环50次,如何设计public class ThreadCommunication {public static void main(String[] args) {final Output output = new Output();//子线程new Thread(new Runnable(){publ原创 2012-04-06 22:35:34 · 1284 阅读 · 0 评论 -
java线程系列---同步器之CountDownLatch
CountDownLatch 是一个极其简单但又极其常用的实用工具,用于在保持给定数目的信号、事件或条件前阻塞执行,通过调用await(),countDown()方法,实现同步功能。例子:有三个线程,等待主线程下发命令,当主线程下发命令时,三个线程会接收命令,并执行,主线程接收执行完的结果public class CountdownLatchTest {public stati原创 2012-07-21 16:36:37 · 1287 阅读 · 0 评论 -
java线程系列---java5中的线程池
public class ThreadPoolsTest {public static void main(String[] args) {//ExecutorService threadpools = Executors.newFixedThreadPool(3);//固定线程池//ExecutorService threadpools = Executors.newCach原创 2012-05-13 14:18:11 · 1337 阅读 · 1 评论 -
java线程系列---读写锁ReentrantReadWriteLock
获取顺序此类不会将读取者优先或写入者优先强加给锁定访问的排序。但是,它确实支持可选的公平 策略。当公平地构造线程时,线程利用一个近似到达顺序的策略来争夺进入。当释放写入锁定后,将写入锁定分配给等待时间最长的单个写入者,如果有一个等待时间比所有写入者更长的读取者,则将读取锁定分配给读取者 set。当非公平地构造线程时,则不需要按照到达顺序进入锁定。不管是哪一种情况,如果读取者处于活动状态,而某个原创 2012-06-26 15:48:27 · 2349 阅读 · 1 评论 -
java线程系列---线程范围内共享变量(一)
在java开发中,有时会遇到这种情况,有一变量,其中有三个模块去访问,在多个线程中,确保,在同一线程内,其访问的是同一变量,这时就要实现线程范围内共享变量源代码如下:public class ThreadSharaDate {private static Map map = new HashMap();public static void main(String[] args) {原创 2012-06-05 20:29:27 · 4932 阅读 · 1 评论 -
java线程系列---Semaphore信号灯
例如:共有三张椅子,现在有十人人等着去坐,一张椅子只能坐一人,坐上椅子后离开给等待的人坐,例子如下:public class SemaphoreTest {public static void main(String[] args) {ExecutorService service = Executors.newCachedThreadPool();final Semaphore原创 2012-07-20 17:47:26 · 1936 阅读 · 0 评论 -
java线程系列---同步器之Exchanger
Exchanger允许两个线程在集合点交换对象,它在多流水线设计中是有用的例子:线程间的数据交换,比如:两个人约定在某个地点交易,一手交钱,一手交货,当一个人先到指定地点,则这个人在此处等着,直到另一人到达此处才完成交易public class ExchangerTest {public static void main(String[] args) {ExecutorServic原创 2012-07-21 16:50:02 · 1102 阅读 · 0 评论 -
java线程系列---condition例子
例如:有三个线程 ,当1执行完后,指定2执行,2执行完后指定3执行,3执行完后指定1执行public class ThreeConditionCommunication {public static void main(String[] args) {final Business business = new Business();new Thread(new Runn原创 2012-06-30 05:36:11 · 2346 阅读 · 2 评论 -
java线程系列---condition的讲解
Condition 将 Object 监视器方法(wait、notify 和notifyAll)分解成截然不同的对象,以便通过将这些对象与任意Lock 实现组合使用,为每个对象提供多个等待 set (wait-set)。其中,Lock 替代了synchronized 方法和语句的使用,Condition 替代了 Object 监视器方法的使用。 条件(也称为条件队列 或条原创 2012-06-27 15:28:01 · 1382 阅读 · 1 评论 -
java线程系列---线程范围内共享变量(二)
通过调用ThreadLocal来实现线程范围内共享变量源代码如下:public class ThreadLocalTest {private static ThreadLocal map = new ThreadLocal();public static void main(String[] args) {for(int i=0;inew Thread(new Runn原创 2012-06-05 20:33:51 · 1729 阅读 · 1 评论 -
java线程系列---BlockingQueue队列的用法
在一队列中,通过存放数据,然后取数据,无数据时,等待取数据,队列数据满了时,等待放数据public class BlockingQueueTest {public static void main(String[] args) {final BlockingQueue queue = new ArrayBlockingQueue(3);for(int i=0;inew Thre原创 2012-07-20 17:52:06 · 2435 阅读 · 0 评论 -
java线程系列---java5的互斥锁Lock
public class LockTest {//lock示例,线程间的互斥锁,在java5中使用,通过lock和unlock方法实现,与synchronized作用一样public static void main(String[] args) {new LockTest().init();}private void init(){final Outputer o原创 2012-07-20 17:44:08 · 1480 阅读 · 0 评论