`
zhouchaofei2010
  • 浏览: 1111531 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java并发编程实战-第6章-任务执行

 
阅读更多

第二部分 结构化并发应用程序

java并发编程实战-第6章-任务执行

6.1 在线程中执行任务

  当围绕”任务执行“来设计应用程序结构时,第一步就是找出清晰的任务边界。理想情况下,任务之间是

 

相互独立的

  

   吞吐率和相应时间的选择:当用户希望尽快的相应,而负载过多时,应用性能应该逐步减低

   

6.2 Excutor框架

    java 类库中,任务执行的主要抽象不是Thread,而是Executor

   

    这是基于生产者-消费者模式的一种设计

6.2.1 示例 基于Excutor的web服务器  

6.2.2 执行策略

    各种执行策略,都是一种资源管理工具。

6.2.3 线程池

    newFixedThreadPool

    newCachedThreadPool

    newSingleThreadExecutor(FIFO, LIFO, priority order).[

    newScheduledThreadPool

6.2.4 Executor 生命周期

 Listing 6.7. Lifecycle Methods in ExecutorService.

public interface ExecutorService extends Executor {

   void shutdown();

   List<Runnable> shutdownNow();

   boolean isShutdown();

   boolean isTerminated();

   boolean awaitTermination(long timeout, TimeUnit unit)

       throws InterruptedException;

   //  ... additional convenience methods for task submission

}

 

 

three states running, shutting down, and terminated

6.2.5 延迟任务和周期任务

     

     Timer是单线程的,应该用ScheduledThreadPoolExecutor替换它

     

      构建自己的ScheduledThreadPoolExecutor,可使用DelayQueue

      

 

     

6.3   需找可以用的并行性

6.3.2 携带结果的任务Callable与Future

6.3.3 示例:使用Future实现页面渲染器

       

6.3.4 在异构任务并行化存在的缺陷

    

6.3.5  CompletionService: Executor Meets BlockingQueue

     CompletionService把Executor和BlockingQueue的功能融合在一起

     

    

    

6.3.6 使用CompletionService实现页面渲染

       图像下载后,放入BlockingQueue队列中,take从BlockingQueue去封装

6.3.7 为任务设置时限

 

6.3.8 示例:旅行预订门户网站

小结:

 

 

Excutor框架的介绍和任务边界定义的观点

 

 

 

分享到:
评论

相关推荐

    Java并发编程实战华章专业开发者书库 (Tim Peierls 等 美Brian Goetz).pdf

    《Java并发编程实战》是一本深入探讨Java平台并发编程的权威指南,由Tim Peierls等人与Brian Goetz合著,旨在帮助Java开发者理解和掌握在多线程环境中编写高效、安全的代码。这本书由拥有丰富经验的JDK并发大师及...

    Java并发编程实践-电子书1-9章pdf

    《Java并发编程实践》是Java开发者深入理解并发编程的重要参考资料,尤其对于想要提升多线程应用设计和性能优化技能的程序员来说,这本书提供了丰富的实践经验和深入的理论知识。以下是根据提供的章节内容概述的一些...

    Java 并发编程实战

    第6章 任务执行 6.1 在线程中执行任务 6.1.1 串行地执行任务 6.1.2 显式地为任务创建线程 6.1.3 无限制创建线程的不足 6.2 Executor框架 6.2.1 示例:基于Executor的Web服务器 6.2.2 执行策略 6.2.3 线程池...

    汪文君高并发编程实战视频资源下载.txt

    │ Java并发编程.png │ ppt+源码.rar │ 高并发编程第二阶段01讲、课程大纲及主要内容介绍.wmv │ 高并发编程第二阶段02讲、介绍四种Singleton方式的优缺点在多线程情况下.wmv │ 高并发编程第二阶段03讲、...

    龙果 java并发编程原理实战

    龙果 java并发编程原理实战 第2节理解多线程与并发的之间的联系与区别 [免费观看] 00:11:59分钟 | 第3节解析多线程与多进程的联系以及上下文切换所导致资源浪费问题 [免费观看] 00:13:03分钟 | 第4节学习并发的四...

    Java并发编程实践 PDF 高清版

    第6章 任务执行 6.1 在线程中执行任务 6.2 Executor 框架 6.3 寻找可强化的并行性 第7章 取消和关闭 7.1 任务取消 7.2 停止基于线程的服务 7.3 处理反常的线程终止 7.4 JVM关闭 第8章 应用线程池 8.1 任务与执行策略...

    汪文君高并发编程实战视频资源全集

    │ Java并发编程.png │ ppt+源码.rar │ 高并发编程第二阶段01讲、课程大纲及主要内容介绍.wmv │ 高并发编程第二阶段02讲、介绍四种Singleton方式的优缺点在多线程情况下.wmv │ 高并发编程第二阶段03讲、...

    java并发编程实践笔记

    ### Java并发编程实践笔记知识点详解 #### 一、保证线程安全的方法 1. **不要跨线程访问共享变量:** 当多个线程共享某个变量时,若其中一个线程修改了该变量,其他线程若没有正确同步,则可能读取到错误的数据。...

    2023java并发编程手册中文版PDF最新版本

    第5、6、9章则主要参考了Brian Goetz的《Java并发编程实战》,提供了实战中的并发解决方案。第7章整理自网络博客,汇集了社区中的优秀实践和见解。第8章则是基于我司的多线程项目经验,提炼出的实际案例,相关代码可...

    java高并发编程第一版

    《Java高并发编程》第一版是一本专注于...通过阅读《Java高并发编程》第一版,开发者不仅可以掌握Java并发编程的核心概念和技术,还能了解到如何在实际工作中设计和实现高效、安全的并发程序,提升系统的并发处理能力。

    Java 并发编程原理与实战视频

    java并发编程原理实战 第2节理解多线程与并发的之间的联系与区别 [免费观看] 00:11:59分钟 | 第3节解析多线程与多进程的联系以及上下文切换所导致资源浪费问题 [免费观看] 00:13:03分钟 | 第4节学习并发的四个...

    java高并发程序设计(原版电子书)

    10. **并发编程实战**:提供实际案例分析和练习,帮助读者将理论知识应用于实际项目,增强解决并发问题的能力。 11. **分布式并发**:简述在分布式系统中的并发问题,如分布式锁、分布式协调服务(如Zookeeper)...

    Java并发编程实践多线程

    《Java并发编程实践》是一本深入探讨Java多线程编程的权威著作,它详细阐述了在并发环境下如何设计和实现高效、可靠的程序。这本书涵盖了Java并发编程的核心概念、工具和最佳实践,对于想要提升Java并发编程技能的...

    Java并发编程实践.rar

    《Java并发编程实践》这本书是Java开发者深入理解并发编程的重要参考资料。它涵盖了从基础到高级的并发编程概念,旨在帮助读者提升在多线程环境下的编程能力,优化系统性能,避免并发问题。以下是对该书内容的详细...

    java 并发编程的艺术

    Executor框架作为Java并发编程的一个高级抽象,允许程序员以声明性的方式定义任务,而无需直接处理线程的创建和管理。第10章详细解释了Executor框架的整体结构和成员组件,为读者展示如何利用这一框架简化并发任务的...

    Java并发编程的艺术1

    11. 第11章提供并发编程实战案例,介绍问题排查方法。 本书适合已有一定Java基础和开发经验的读者,特别是Java开发工程师、架构师和并发编程爱好者。初学者可以按顺序阅读并实践书中的例子,有经验的读者则可根据...

    JAVA语言程序设计-第十六章 网络编程

    在Java编程领域,网络编程是不可或缺的一部分,它允许应用程序通过网络进行通信,实现数据的传输。本章将深入探讨Java中的网络编程技术,包括基本概念、API使用以及常见问题的解决。 1. Java网络编程基础 Java提供...

Global site tag (gtag.js) - Google Analytics