Skip to Content
学习 Java,第 6 版
book

学习 Java,第 6 版

by Marc Loy, Patrick Niemeyer, Daniel Leuck
May 2025
Intermediate to advanced
552 pages
7h 22m
Chinese
O'Reilly Media, Inc.
Content preview from 学习 Java,第 6 版

第 9 章 线索 线程

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

我们理所当然地认为,,现代计算机系统可以管理许多同时运行的应用程序和操作系统(OS)任务,并让人觉得所有软件都在同时运行。如今,大多数系统都有多个处理器或多个内核,或两者兼备,并发程度令人印象深刻。操作系统仍在更高层次上处理应用程序,但会迅速将注意力从一个转向下一个,使它们看起来也是同时运行的。

备注

在程序设计中,并发运行指的是多个通常不相关的任务同时运行。想想快餐店的厨师在烤架上准备多份订单的情景。并行操作通常是指将大型任务分解成相关的子任务,这些子任务可以同时运行,以更快地产生最终结果。我们的厨师可以 "并行 "准备一个培根双层芝士汉堡,方法是同时将两个肉饼和一些培根放在烤架上。无论在哪种情况下,程序员都会更笼统地谈论这些同时进行的任务和子任务。这并不是说所有任务都在同一时刻开始和停止,但确实意味着这些任务的执行时间是重叠的。

在过去,操作系统的并发单元是应用程序或进程。对于操作系统来说,进程或多或少就是一个黑盒子,它自己决定做什么。如果应用程序需要更高的并发性,它只能通过运行多个进程并在它们之间进行通信来实现,但这是一种重量级的方法,并不十分优雅。

后来,操作系统增加了线程的概念。从概念上讲,线程是程序中的一个控制流(例如,你可能听说过 "执行线程")。(例如,你可能听说过 "执行线程")线程在应用程序自己控制的进程中提供了细粒度的并发性。线程的存在由来已久,但使用起来一直很棘手。Java 并发实用程序解决了多线程应用程序中的常见模式和做法,并将其提升到了有形方法和类的级别。总的来说,这意味着 Java 支持较高层次和较低层次的线程。

这种广泛的支持使程序员更容易编写多线程代码,也使编译器和运行时更容易优化这些代码。这也意味着 Java 的 API 充分利用了线程的优势,因此,在探索 Java 的初期,一定要在一定程度上熟悉这些概念。并非所有开发人员都需要编写明确使用线程或并发性的应用程序,但大多数开发人员都会使用涉及线程或并发性的某些功能。

线程是许多 Java API 设计中不可或缺的一部分,尤其是那些涉及客户端应用程序、图形和声音的 API。例如,当我们在第 12 章中学习图形用户界面编程时,你会发现组件的paint() 方法并不是由应用程序直接调用的,而是由 Java 运行时系统中的一个单独的绘图线程调用的。在任何给定时间内,许多这样的后台线程都可能与应用程序一起执行活动,但您仍能及时获得屏幕更新。在服务器端,Java 线程也在为每个请求提供服务并运行您的应用程序。了解您的代码如何融入这一环境非常重要。

在本章中,我们将讨论如何编写可明确创建和使用自己的线程的应用程序。我们将首先讨论 Java 语言内置的底层线程支持,然后讨论java.util.concurrent 线程实用程序包。我们还将讨论 Java 19 中以 Project Loom 名义预览的新虚拟线程。

线程介绍

线程的概念类似于进程或运行中的程序,只不过同一应用程序中的不同线程比同一台机器上运行的不同程序关系更密切,并共享许多相同的状态。这有点像许多高尔夫球手同时使用的高尔夫球场。线程相互合作,共享一个工作区。它们轮流等待其他线程。它们可以访问应用程序中的相同对象,包括静态变量和实例变量。不过,线程拥有自己的本地变量副本,就像球员共享高尔夫球场或高尔夫球车,但不共享球杆或球一样。

一个应用程序中的多个线程与球场上的高尔夫球手有同样的问题--一句话, ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

《学习 Python》第 5 版

《学习 Python》第 5 版

Mark Lutz
CSS:权威指南,第 5 版

CSS:权威指南,第 5 版

Eric Meyer, Estelle Weyl
詳解 システム・パフォーマンス 第2版

詳解 システム・パフォーマンス 第2版

Brendan Gregg, 西脇 靖紘, 長尾 高弘

Publisher Resources

ISBN: 9798341656772