concurrency_overview

第二十一章 Java并发编程概述(Java Concurrent Programming Overview)

1 概述

作为一门通用型编程语言(General-purpose Programming Language),Java也支持并发编程(Concurrent Programming)。使用并发技术,开发人员能够更加充分地利用CPU计算资源,缩短程序的执行时间和响应时间,提高运行环境的使用率。并发编程是一种在单进程(Single Process)中通过创建多个线程(Multi-Threads)以达到并行执行的技术。通过操作系统的调度,多个线程可以同时运行在不同的CPU核(CPU Cores)上。并且,当一个线程在等待I/O响应时,另一个线程可以被调度执行。因此,使用并发编程技术有着如下优势和特点:

  1. 程序运行更快,效率更高。程序可以使用更多的计算资源。
  2. 与进程级并行编程相比,并发编程开发周期短,开发效率高。
  3. 能有效缩短响应时间,适用于用户交互程序。
  4. 线程间数据交换更为方便、高效。

然而,并发编程技术也不可避免的存在一些问题。例如,

  1. 多线程程序不易问题定位和调试。
  2. 与开发单线程程序相比,开发多线程程序的难度更大。
  3. 程序可能进入死锁状态,无法继续运行。

总而言之,在许多场景下,多线程技术给人们带来了良好的用户体验。与此同时,开发人员也在不断的探索新的方法和工具,以降低开发与运行多线程程序的风险。

2 多线程应用场景

我们在本小节例举两个多线程应用场景,以帮助读者理解多线程技术的优势。

2.1 Web服务器(缩短响应时间)

用户交互程序是一类经典的多线程应用程序。当用户打开浏览器浏览网页时,实际上,该用户发送了一个页面请求给Web服务器。Web服务器根据请求的内容,返回相应的页面。Web服务器通常是一个多线程应用程序(有时是多进程应用程序)。当服务器收到一个请求时,该请求是在独立的一个线程中运行的。这是为了能及时的响应用户请求,保证用户的良好体验。假设,Web服务器是一个单线程程序,所有的请求均由一个线程处理。那么,当Web服务器需要较长时间处理某一个用户请求时,接下来的所有用户请求必须等待其完成后,才有机会被处理。这样的话,这些用户等待响应的时间会较长,用户体验会较差。这些问题都可以用多线程技术来解决。

2.2 矩阵计算(提高计算资源利用率,缩短运行时间)

矩阵计算的一个显著特点是各个部分的计算相互较为独立,可以同时计算。而现代CPU都有着多个可执行单元(CPU核)。因此,使用多线程技术可将矩阵计算拆分成多个相互独立的计算部分,使其在不同的可执行单元上并行运行。这样做不但可以提高计算资源的使用率,而且还可以缩短矩阵计算的时间。

3 内容

本系列文章将会围绕着Java并发编程的核心内容展开,每一章节介绍一个重要的概念,并配以用例讲解。这些重要的概念包括:线程的创建与销毁,多种线程同步的方式,通用的多线程编程模型和相关的Java标准线程库等。在用例中,我们会尽量给出详尽的代码,以便于读者理解。在讲解Java标准库的使用方式的同时,我们还解释了其中使用的、常见的多线程程序设计模式(例如:生产者/消费者模式、线程池模式和面向阶段的编程模式等),欢迎大家阅读。

本系列文章的主题如下:

 

 

 

上一章
下一章

注册用户登陆后可留言

Copyright  2019 Little Waterdrop, LLC. All Rights Reserved.