『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Thread-Specific Storage パターン。 このパターンは java.lang.ThreadLocal を使えば実装できます。 あんまり Groovy/GPars の出番が感じられないので流す感じで。
サンプル・コード
作成するソースは
- ThreadSpecificLog クラス スレッド毎にインスタンス作成されるクラス
- Log クラス
- 実行スクリプト
です。
ThreadSpecificLog クラス
class ThreadSpecificLog { private PrintWriter writer = null ThreadSpecificLog(String filename){ this.writer = new PrintWriter(new FileWriter(filename)) } void println(String s){ this.writer.println(s) } void close(){ this.writer.println('==== End of log ====') this.writer.close() } }
Log クラス
class Log { private static final ThreadLocal<ThreadSpecificLog> TS_LOGS = new ThreadLocal<>() static void println(String s){ getTSLog().println(s) } static void close(){ getTSLog().close() } private static ThreadSpecificLog getTSLog(){ def log = TS_LOGS.get() if (log == null){ log = new ThreadSpecificLog("${Thread.currentThread().name}-log.txt") TS_LOGS.set(log) } return log } }
実行スクリプト
Thread.start client('Alice') Thread.start client('Bobby') Thread.start client('Chris') def client(String name){ return { println "$name BEGIN" 10.times{ Log.println("i = $it"); Thread.sleep 100 } Log.close() println "$name END" } }

増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編
- 作者: 結城浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2006/03/21
- メディア: 大型本
- 購入: 15人 クリック: 287回
- この商品を含むブログ (199件) を見る

- 作者: 関谷和愛,上原潤二,須江信洋,中野靖治
- 出版社/メーカー: 技術評論社
- 発売日: 2011/07/06
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 392回
- この商品を含むブログ (152件) を見る