Skip to Content
Javaパフォーマンス第2版
book

Javaパフォーマンス第2版

by Scott Oaks
March 2025
Intermediate to advanced
450 pages
7h 10m
Japanese
O'Reilly Media, Inc.
Content preview from Javaパフォーマンス第2版

第9章. スレッドと同期のパフォーマンス

この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com

Javaの魅力のひとつは、マルチスレッドであることだ。マルチコアやマルチCPUシステムが主流になる前の時代でさえ、Javaでスレッドプログラムを簡単に書けることは、Javaの特徴の1つと考えられてきた。

性能の面では、その魅力は明らかである。2つのCPUが利用可能であれば、アプリケーションは2倍の仕事、あるいは同じ量の仕事を2倍の速さでこなせるかもしれない。Javaはアルゴリズムの部分を把握するような自動並列化言語ではないからだ。幸いなことに、今日のコンピューティングは多くの場合、離散的なタスクである。離散的なクライアントからの同時リクエストを処理するサーバ、一連のデータに対して同じ演算を実行するバッチジョブ、構成部分に分割される数学的アルゴリズムなどである。

この章では、Javaのスレッド機能と同期機能を最大限に活用する方法について説明する。

スレッドとハードウェア

第1章のマルチコアシステムとハイパースレッドシステムについての議論を思い出してほしい。ソフトウェアレベルでのスレッディングは、マシンのマルチコアとハイパースレッドを利用する利点を可能にする。

マシンのコアを2倍にすることで、正しく書かれたアプリケーションの性能を2倍にすることができるが、第1章で説明したように、CPUにハイパースレッディングを追加しても性能は2倍にならない。

例外は、ハイパースレッ ド CPU と非ハイパースレッド CPU の違いを示す最初の例である。その後、スレッドを追加することによる性能への影響をよりよく理解できるように、シングルスレッドCPUコアの観点からのみスケーリングを見ていく。ハイパースレッドCPUが重要でないと言っているわけではない。追加のハードウェアスレッドによる20%~40%の性能向上は、アプリケーションの全体的な性能やスループットを確実に向上させる。Javaの観点からは、ハイパースレッドを実際のCPUとみなし、4コア8ハイパースレッドのマシンで動作するアプリケーションを、あたかも8つのCPUがあるかのようにチューニングすべきである。しかし、計測の観点からは、シングルコアと比べて5~6倍の改善しか期待できないはずだ。

スレッド・プールとThreadPoolExecutor

スレッドは、Javaのカスタムコードで管理することもできるし、アプリケーションで スレッドプールを利用することもできる。Javaサーバーは通常、リクエストを処理するために1つ以上のスレッドプールという概念を中心に構築されている。サーバーへの呼び出しはそれぞれ、プールからの(潜在的に異なる)スレッドによって処理される。同様に、他のアプリケーションも、JavaのThreadPoolExecutorを使ってタスクを並列実行できる。

実際、いくつかのサーバ・フレームワークは、ThreadPoolExecutorクラスのインスタンスを使用してタスクを管理しているが、(Java APIにThreadPoolExecutorが追加されるよりも前に開発されたためか)独自のスレッド・プールを記述しているものも多い。これらの場合、プールの実装は異なるかもしれないが、基本概念は同じであり、このセクションでは両方について説明する。

スレッドプールを使用する上で重要なのは、プールのサイズを調整することが、最高のパフォーマンスを得るために重要であるということだ。 ...

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

スクラム実践者が知るべき97のこと

スクラム実践者が知るべき97のこと

Gunther Verheyen, 吉羽 龍太郎, 原田 騎郎, 永瀬 美穂

Publisher Resources

ISBN: 9798341626010