QA@IT

Javaのマルチスレッドなどについて

4468 PV

保守・サポートや機能拡張だけを続けているプログラマーです。

新規機能の開発で、SchedulerやExecutor、タスクなど、マルチスレッドを利用した機能を
作成する機会がないのですが、皆さんはどのような書籍(あるいはネットでの検索キーワード)で
情報を集めて学習しているのでしょうか?

回答

Webアプリケーションや、フレームワークを利用した一般的なアプリケーションでは自分でスレッドを制御することはありませんのでなかなか勉強する機会は確かにないですね。
(スレッドセーフになるよう気をつけるのは重要ですが)

まずはスレッドが相互にどう影響するのか考えることが大事です。

Swingは特徴的なスレッドモデルを持っています。今Swingははやりではありませんが、私はSwingアプリケーションの開発(趣味)と、Webアプリケーション開発、また並列処理をする自分用ユーティリティを作る課程でスレッドの処理を学びました。

あとは、たとえばわざとスレッドセーフでないコードを書いてJMeterで負荷を書けたり多数のスレッドを立ち上げるコードを書いたりするなどして動作を検証するのもためになります。

編集 履歴 (0)
  • 回答ありがとうございます。実際にコードを書いて動かすのが一番ですね。。。自宅にあるPCに開発環境をインストールして確認してみます。 -

JavaのThreadやExecutorを解説した書籍ならJava並行処理プログラミング がお勧めです。
Java5で追加された java.util.concurrent パッケージのクラス群の解説も、それ以前のよりプリミティブなマルチスレッド用言語機構の解説もとても充実しています。

余談ですが、この本は発売後に人気ですぐに売り切れになったにもかかわらず増刷されず絶版状態だったのですが、「復刊ドットコム」に多数のリクエストが集まって復刊されたりした本です。

編集 履歴 (1)
  • 回答ありがとうございます。書籍はどこかの書店で見た記憶があるのですが、その当時はJavaを仕事で使っていなかったため、立ち読みもしていませんでした。探してみます。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。