第四章 线程执行者(一)引言

简介:

在这个章节中,我们将覆盖:

引言

通常,当你在Java中开发一个简单的并发编程应用程序,你会创建一些Runnable对象并创建相应的Thread对象来运行它们。如果你开发一个运行多个并发任务的程序,这种途径的缺点如下:

  • 你必须要实现很多相关代码来管理Thread对象(创建,结束,获得的结果)。
  • 你必须给每个任务创建一个Thread对象。如果你执行一个大数据量的任务,那么这可能影响应用程序的吞吐量。
  • 你必须有效地控制和管理计算机资源。如果你创建太多线程,会使系统饱和。

为了解决以上问题,从Java5开始JDK并发API提供一种机制。这个机制被称为Executor framework,接口核心是Executor,Executor的子接口是ExecutorService,而ThreadPoolExecutor类则实现了这两个接口。
这个机制将任务的创建与执行分离。使用执行者,你只要实现Runnable对象并将它们提交给执行者。执行者负责执行,实例化和运行这些线程。除了这些,它还可以使用线程池提高了性能。当你提交一个任务给这个执行者,它试图使用线程池中的线程来执行任务,从而避免继续创建线程。

Callable接口是Executor framework的另一个重要优点。它跟Runnable接口很相似,但它提供了两种改进,如下:

  • 这个接口中主要的方法叫call(),可以返回结果。
  • 当你提交Callable对象到执行者,你可以获取一个实现Future接口的对象,你可以用这个对象来控制Callable对象的状态和结果。

在这章中提供了11个指南,展示了如何通过使用前面提及的类和Java并发API来处理Executor framework。 

目录
相关文章
|
异构计算
《多核与GPU编程:工具、方法及实践》----第3章 共享内存编程:线程 3.1 引言
本章目标: 学习线程的定义以及创建方法。 学习完成特定任务的初始化线程方法。 学习多种终止多线程程序的技术。 理解多线程访问共享数据过程中的主要问题,例如竞争和死锁。
1363 0
|
Java 存储 开发工具
线程执行者(六)运行多个任务并处理所有结果
声明:本文是《 Java 7 Concurrency Cookbook 》的第四章,作者: Javier Fernández González 译者:许巧辉 校对:方腾飞,叶磊 运行多个任务并处理所有结果 执行者框架允许你在不用担心线程创建和执行的情况下,并发的执行任务。
1207 0
|
Java 开发工具 IDE
线程执行者(七)执行者延迟运行一个任务
声明:本文是《 Java 7 Concurrency Cookbook 》的第四章,作者: Javier Fernández González     译者:许巧辉     校对:方腾飞,叶磊 执行者延迟运行一个任务 执行者框架提供ThreadPoolExecutor类,使用池中的线程来执行Callable和Runnable任务,这样可以避免所有线程的创建操作。
1272 0
|
Java 程序员 数据库连接