Java7并发编程--5、并发集合

Java提供了两类适用于并发场景下的集合: 阻塞式集合(Blocking Collection):这类集合包括添加和移除数据的方法,当集合已满或为空时,被调用的添加或者移除方法就不能立即被执行,那么调用这个方法的线程将被阻塞,一直到该方法可以被成功执行。非阻塞式集合(Non-Blocking ...

2016-08-11 21:22:06

阅读数 663

评论数 0

Java7并发编程--4.4、在执行器中执行任务并且返回结果

执行器框架(Executor Framework)提供了ThreadPoolExecutor类并采用线程池来执行Callable和Runnable类型的任务,但是如果不想任务马上执行,而是想让任务过一段时间后才被执行,或者任务能够被周期性执行。为了这个目的,执行框架提供了ScheduledThre...

2016-08-11 20:28:59

阅读数 255

评论数 0

Java7并发编程--4.3、运行多个任务并处理结果

处理第一个结果 1、使用 ThreadPoolExecutor.invokeAny(list); 让线程池来帮我们拿到最快返回结果的结果。invokeAny()方法接收一个列表,然后运行任务,并且返回第一个完成任务并且没有抛出异常的任务的执行结果。这个方法的返回类型与call()方法的返回类型相...

2016-08-11 18:22:33

阅读数 199

评论数 0

Java7并发编程--4.2、在执行器中执行任务并且返回结果

执行框架(Executor Framework)的优势之一就是,可以在运行并发任务的时候返回结果。但是需要以下两个类来实现功能:     接口 Callable 返回结果并且可能抛出异常的任务。实现者定义了一个不带任何参数的叫做 call 的方法。  Callable 接口类似于 Runnab...

2016-08-11 17:37:59

阅读数 194

评论数 0

Java7并发编程--4.1、创建线程执行器

使用执行器框架(Executor Framework)的第一步就是创建ThreadPoolExecutor对象。可以使用ThreadPoolExecutor类提供的四个构造器或者使用Executors工厂类来创建ThreadPoolExecutor对象,鉴于这些构造器在使用上的复杂性,推荐使用Ex...

2016-08-11 14:13:47

阅读数 210

评论数 0

Java7并发编程--4、线程执行框架

通常用java来开发一些简单的并发应用,会创建一些runnable对象,然后创建对应的Thread对象来执行他们,但是如果需要开发一个程序来运行大量的并发任务,再使用以前的方法,将会带来以下几点劣势:  1. 必须实现所有与thread对象管理相关的代码,比如线程的创建、执行、结束、以及结果。 ...

2016-08-11 13:31:25

阅读数 223

评论数 0

Java7并发编程--3.6、Exchanger并发任务间的数据交换

Exchanger 是一个同步辅助类,用于两个并发线程之间在一个同步点进行数据交换。        关于Exchanger 的使用: 两个线程必须使用同一个Exchanger对象,且只能是两个线程间的数据交换exchanger.exchange(v)的时候,当前线程会被阻塞,直到另一个线程执行...

2016-08-11 13:14:49

阅读数 214

评论数 0

Java7并发编程--3.5、Phaser并发阶段任务中的阶段切换

在phaser中,有一个onAdvance方法, 该方法在参与者数量为0的时候,返回true,来表示该phaser状态为终止状态。它在phaser阶段改变的时候会自动执行。他需要两个参数,当前阶段数和注册的参与者数量。继承并覆盖phaser的 onAdvance 方法,来实现阶段切换的功能,要注意...

2016-08-11 12:50:51

阅读数 244

评论数 0

Java7并发编程--3.4、Phaser并发阶段任务的运行

Phaser是一个更强大的、更复杂的同步辅助类,可以代替CyclicBarrier CountDownLatch的功能,但是比他们更强大。          Phaser类机制是在每一步结束的位置对线程进行同步,当所有的线程都完成了这一步,才能进行下一步。          当我们有并发任务并且需...

2016-08-11 03:38:52

阅读数 2060

评论数 0

Java7并发编程--3.3、CyclicBarrier在集合点同步

CyclicBarrier是一个同步辅助类,允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。因为该 barrier 在释放等待线程后可以重用,所以称它为循环的barrier。         注意比较CountDownLatch和CyclicBarrie...

2016-08-11 03:06:47

阅读数 329

评论数 0

Java7并发编程--3.2、CountDownLatch等待多个并发事件完成

CountDownLatch是一个同步辅助类,不保证同步,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。            假如说:有a、b、c 三个线程,c 需要a,b线程的结果,所以c需要等待 a,b 线程都执行完了,c才能拿到正确的结果。 就是该类的一个使用场景...

2016-08-11 02:04:05

阅读数 164

评论数 0

Java7并发编程--3.1、信号量Semaphore机制

信号量是一种计数器,用来保护一个或多个共享资源的保护。        如果线程要访问一个共享资源,它首先必须获得信号量。如果信号量的内部计数器大于0,则信号量减1,然后允许访问这个共享资源。计数器大于0意味着有可以使用的资源,因此线程将被允许使用其中的一个资源。        否则信号量的计数器等...

2016-08-11 01:37:58

阅读数 263

评论数 0

Java7并发编程--3、线程同步辅助类

常用的同步有synchronized关键字、Lock接口以及实现类,如ReentrantLock、ReentrantReadWriteLock中的ReadLock和WriteLock。         在本章中将以以下几个更高级的同步机制来实现多线程的同步。 信号量(Semaphore):  ...

2016-08-11 00:31:25

阅读数 194

评论数 0

Java7并发编程--2、锁中使用多条件condition

在lock中提供了与之关联的条件,一个锁可能关联一个或多个条件,这些条件通过condition接口声明。目的是运行线程获取锁并且查看等待某一个条件是否满足,如果不满足则挂起直到某个线程唤醒它们。condition接口提供了挂起线程和唤起线程的机制;        介绍下下面一堆代码所做的事情:使...

2016-08-10 23:38:20

阅读数 2521

评论数 0

Java7并发编程--1、线程管理

1.1 简介        并发和并行从宏观上来讲都是同时处理多路请求的概念。但并发和并行又有区别,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。

2016-07-23 22:11:15

阅读数 871

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭