Skip to Content
Javaへの関数的アプローチ
book

Javaへの関数的アプローチ

by Ben Weidig
March 2025
Intermediate to advanced
414 pages
5h 47m
Japanese
O'Reilly Media, Inc.
Content preview from Javaへの関数的アプローチ

第13章 非同期タスク 非同期タスク

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

最近のワークロードは、利用可能なシステムリソースを効率的に使用する方法について、より多くの考えを必要とする。 非同期タスクは、パフォーマンスのボトルネックを回避することで、アプリケーションのレスポンスを向上させるための優れたツールである。

Java 8では、新しいジェネリック型、CompletableFuture<T> が導入された。この型は、以前から利用可能だったFuture<T> 型を改良したもので、宣言的かつ関数的なアプローチを利用することで、非同期タスクを作成することができる。

この章では、非同期プログラミングを利用する理由と方法、そしてCompletableFuture<T> が、以前のJDKに含まれていたものよりも柔軟で機能的な非同期タスクへのアプローチであることを説明する。

同期と非同期

同期タスクと非同期タスクの概念は、ソフトウェア開発に限ったことではない。

例えば、対面でのミーティングや電話会議は、少なくとも注意を払えば同期アクティビティである。 参加してメモを取る以外は何もできない。 ミーティングや呼び出しが終わるまで、他のタスクはすべてブロックされる。ミーティングや呼び出しが電子メールであった場合、私のミーティングのほとんどがそうであったように、前のタスクを再開する前にすぐに注意を払う必要があるため、現在のタスクが中断されることはない。 したがって、電子メールはブロッキングしないコミュニケーションである。

同じ原則がソフトウェア開発にも当てはまる。 同期的に実行されるタスクは順番に実行され、終了するまで次の作業がブロックされる。 シングルスレッドから見ると、ブロックタスクは結果を待つことを意味し、タスクが終了するまで他のことをしないことでリソースを浪費する可能性がある。

非同期タスクとは、"他のどこか "で処理されるタスクを開始し、それが完了したら通知を受け取るというものだ。 このようなタスクは、並行処理テクニックを使って、通常は別のスレッドに作業を分担させることでノンブロッキングとなり、タスクの終了を待つ必要がなくなる。 したがって、図13-1に示すように、現在のスレッドはブロックされず、他のタスクを続行することができる。

Comparison of synchronous and asynchronous execution
図13-1. 同期実行と非同期実行の比較

第8章で説明したように、並列実行は最大のスループットを第一の目的としている。 一方、CompletableFutureを使用するような非同期実行モデルは、システム全体の遅延と応答性に重点を置いている。 タスクをスピンオフさせることで、シングルスレッドやリソースに制約のある環境でも、応答性の高いシステムを実現することができる。

Java先物

Java 5では、非同期計算の最終結果のコンテナ型として、java.util.concurrent.Future インタフェースが導入された。Future を作成するために、Runnable またはCallable<T> 形式のタスクは、ExecutorService にサブミットされる。 は、別のスレッドでタスクを開始するが、すぐに Future インスタンスを返す。こうすることで、現在のスレッドは、 ...

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

学習アルゴリズム

学習アルゴリズム

George Heineman
エンジニアが学ぶ会計システムの「知識」と「技術」

エンジニアが学ぶ会計システムの「知識」と「技術」

広川 敬祐, 五島 伸二, 小田 恭彦, 大塚 晃, 川勝 健司

Publisher Resources

ISBN: 9798341625730