[Java] ThreadLocal



マルチスレッド・プログラミングを行なうときに注意しなければならないのは、スレッド間での変数の競合。

つまり、あるスレッドがある変数を使用しているときに、別のスレッドがその変数を書き換えてしまうような場合。

再現の困難なバグとなってしまいます。


synchronized により競合を防ぐこともできますが、あるスレッドがその変数を使用している間、別のスレッドの待ちが発生するため、パフォーマンスの劣化が生じます。


このような場合に有効なのは、スレッド毎に別々の変数を用意するという方法です。

Java ではこのような構造をThreadLocalで実現します。

スレッドが終了すると、保持していた変数は GC の対象となります。

posted by へっぽ at 22:50 | TrackBack(0) | java | このブログの読者になる | 更新情報をチェックする

この記事へのトラックバック