デザインパターン/マルチスレッド

【デザインパターン】【非同期】Two-Phase Terminationパターン

Two-Phase Termination * 後片付けしてから、おやすみなさい (スレッドの処理をメインの処理と終了処理に分けて、安全にスレッドを終了させる) 特徴 * 終了要求メソッドを用意し、そのメソッド内で「終了用フラグ」と「interruptメソッド」を用いて 終了要…

【デザインパターン】【非同期】Immutableパターン

■ Immutable * 壊したくとも、壊せない (インスタンスの内容が変化しない) * immutable(イミュータブル) = 不変の 特徴 / 利点 別にたいしたことはない * フィールドに対してsetterを提供せず、getterだけを提供 => 値は変更できない => メソッドなどにsynch…

【デザインパターン】【非同期】Single Thread Executionパターン

Single Thread Executionパターン * 難しく考える必要はない * この橋を渡れるのは、たった一人(別スレッドが処理が終わるまで待つ) * 複数スレッドから同時に実行されたくない場合、 「synchronized」をつけて、「同時にひとつのスレッドしか実行できない…

【デザインパターン】【非同期】Balking パターン

Balking パターン * Balking (ボーキング) ⇒Balk「ボーク」(野球のボークと同じで、投球動作を「途中でやめる」) * balk(ボーク) = 「急に止まる」「妨げる」「裏をかく」 * ざっくり言うと、「ブロック」。 使いどころ * 別スレッドが処理していたら、…

【デザインパターン】【非同期】Thread-Per-Message パターン

Thread-Per-Message パターン * スレッド(Client)がインスタンス(Host)のメソッドを呼び出している場合、 メソッド処理が終了するまでインスタンス(Host)から制御が戻ってこない * インスタンス(Host)が処理用のスレッドを新たに起動し、処理を任せ…

【デザインパターン】【非同期】デザインパターン / マルチスレッド の分類 ~目次~

■ Single Thread Execution * この橋を渡れるのは、たった一人(別スレッドが処理が終わるまで待つ) 関連記事 https://blogs.yahoo.co.jp/dk521123/34224730.html ■ Immutable * 壊したくとも、壊せない (インスタンスの内容が変化しない) * immutable(イミ…

【デザインパターン】【非同期】Read-Write Lock パターン

仕様 * 複数個のスレッドで同時に読みのは受け付ける * 読んでいる間は書き込めない => 逆に言うと、書いている間は、他のスレッドは読むことはできない 利点 * 読む処理同士は、排他されないのでパフォーマンスが上がる サンプル * java.util.concurrent で…

【デザインパターン】【非同期】Guarded Suspensionパターン

Guarded Suspensionパターン * 処理要求に対して、実行可能な状態になるまで待機させるデザインパターン => インスタンスが適切な状態になるまで、ガード条件を使ってスレッドを待たせる * ガード条件が変化したことをスレッドの通知(notify/notifyAll) 関…

【デザインパターン】【非同期】 Future パターン

■ Future パターン * 将来実行できる状態になるまで待つ * 処理の実行担当者は、処理が渡されると別スレッド上で処理を開始して、 メインスレッドには即座にFutureオブジェクトを返すこと * 現在はまだ結果を取得できないが、将来のある時点で取得することに…

【デザインパターン】【非同期】 Worker Thread パターン

Worker Thread パターンについて * 別名 = 「Background Thread」、「Thread Pool(スレッドプール)」 * 呼び出しと実行の分離 * スレッドを使いまわすことによる処理能力(スループット)の向上 Worker Thread パターンをjava.util.concurrent を使って実…

【デザインパターン】【非同期】Producer-Consumer パターン

■ Producer-Consumer パターン(生産者-消費者パターン) * Queue(キュー)を用意し、 1つのプロセス(producer)が、データが生産できたらそのキューに追加。 もう1つのプロセス(consumer)が、キューからデータを取り出し、処理をする。 * キューは複数スレ…

【デザインパターン】【非同期】Thread-Specific Storage パターン

目的 * 他のスレッドからアクセスさせないようにする ポイント * java.lang.ThreadLocal を使う => スレッド毎の値を保持するためのクラス => 詳細は以下の関連記事を参照のこと。 http://blogs.yahoo.co.jp/dk521123/36396466.html サンプル * スレッドごと…

【デザインパターン】【非同期】Active Object パターン

Active Object パターン * 並行処理のパターン * 別名 : Actor パターン 用途 * 外部から非同期にメッセージを受け取っても、自分固有のスレッドで、 自分の都合のいいタイミングで処理を実行させたい場合に利用する 処理の流れ * Client :処理を要求するス…