マルチスレッド
前回は ExecutorService を使ったタスクの依頼・実行方法を見ました。 今回は ExecutorService のシャットダウン・終了方法を見ていきます。 ExecutorService を使うプログラムでは必ずシャットダウンを行う必要があるので忘れずに。記事内容 ExecutorServic…
最近『Java並行処理プログラミング ―その「基盤」と「最新API」を究める―』で Java の並行処理プログラミングを勉強中なんですが、ExecutorService の使い方あたりで完全に消化不良に陥ってしまったので、知識の整理を敢行。 今回は ExecutorService を使っ…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Initialization On Demand Holder パターン。 このパターンは static フィールドの遅延初期化 (lazy initializa…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Double-checked Locking パターン。 このパターンは、複数のスレッドからアクセスされる可能性のあるフィールド…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Active Object パターン。 これは別名 Actor パターンとも呼ばれるので、GPars の Actor を使っての実装を試み…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Thread-Specific Storage パターン。 このパターンは java.lang.ThreadLocal を使えば実装できます。 あんまり …
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Two-Phase Termination パターン。 このパターンでは、スレッドを終了したいときにいきなり止めるのではなく、…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Future パターン。 このパターンでは、「引換券を、お先にどうぞ」と言うのが的を射ているように、まだ終わって…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Worker Thread パターン。 Worker Thread パターンも java.util.concurrent パッケージのクラスを使えば実装す…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Thread-Per-Message パターン。 このパターンは、メッセージ(リクエスト)が送られてきたら、それに対して1つ…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Read-Write Lock パターン。 このパターンも Java SE 5 で導入された java.util.concurrent パッケージ(正確に…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Producer-Consumer パターン。 Producer-Consumer パターンはやるべき仕事を見つけることとその仕事を実行する…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Balking パターン。 前回見た Guarded Suspension パターンでは、(キューが空になったり空きができたりなどの…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Guarded Suspension パターン。 Guarded Wait, Spin Lock などとも呼ばれるそうです。このパターンは java.util…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、の続き。 今回は Immutable パターン。 状態が変わらないオブジェクトは、いつどのようにスレッドからアクセスされても…
以前、Single Thread Execution パターンを GPars の Actor を使って書き換えてみました。 そこでは門の役割をする Gate クラス自体を Actor のサブクラスである DefaultActor を使ってスレッドセーフな実装にしていました。 ただし、クラスをスレッドセーフ…
Groovy でのマルチスレッド・プログラミングを練習するために、『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』にあるマルチスレッド・プログラミングのデザインパターンを Groovy/GPars で書いてみます。今回は「Single Thread Execut…
前回 Java 7 を使う環境設定を行ったので、ついでにちょっと Java 7 をいじってみます*1。 今回見ていくのは java.util.concurrent パッケージに追加された Fork/Join フレームワークです。 Fork/Join は大量の計算を小さい部分に分けてマルチスレッドで計算…
今回は前回見た Griffon でのスレッド・プログラミングを「関数描画アプリケーション」に適用してみます(一覧)。 適用対象はグラフを描画する処理 Controller.paintGraph です(以下、FunctionPlotterController などを Controller などと書いてる箇所があ…
前回、「関数描画アプリケーション」で Charts プラグインを使ってグラフを描画するようにしました。 ついでにサンプル数も変更できるようにしました。 で、調子に乗ってサンプル数を 10,000 とか 100,000 とかにしてグラフを描かせていると見事にフリーズ・…
あまり使ったことないので、メソッドの宣言だけ載せておきます(一覧)。メソッドは独断と偏見で幾つかにカテゴリー分けしてます: エントリーなどの取得:get() や keySet() など エントリーの追加:put() など エントリーの削除:remove() など その他注意…
今回は BlockingQueue と BlockingDeque の2つ(一覧)。メソッドは独断と偏見で幾つかにカテゴリー分けしてます: 集合としてのメソッド:size() や iterator() など 要素の挿入:add(), offer() など 要素の削除:remove(), poll() など 要素の検査:eleme…