ホームページ > Java > &#&チュートリアル > Java で ThreadLocal 変数をいつどのように使用すればよいですか?

Java で ThreadLocal 変数をいつどのように使用すればよいですか?

Mary-Kate Olsen
リリース: 2024-12-02 06:32:10
オリジナル
409 人が閲覧しました

When and How Should I Use ThreadLocal Variables in Java?

ThreadLocal 変数を使用する場合とその方法

ThreadLocal 変数は、Java アプリケーションでスレッドごとのデータを管理するための重要なメカニズムを提供します。ここでは、それらを効果的に使用する場合と方法について詳しく説明します。

ThreadLocal 変数を使用する場合

ThreadLocal 変数を使用するための 1 つの重要なシナリオは、非変数を使用する場合に発生します。 - 個々のスレッド内で分離したいスレッドセーフなオブジェクト。これにより、同期アクセスの必要性が回避され、パフォーマンスと同時実行性が向上します。

ThreadLocal 変数の使用方法

ThreadLocal 変数は、通常の変数と同様に宣言されますが、 ThreadLocal クラス。このクラスは、各スレッドで変数のデフォルト値を設定できるInitialValue() メソッドを公開します。

使用例

次の例を考えてみましょう。

public class Foo {
    // SimpleDateFormat is not thread-safe, so give one to each thread
    private static final ThreadLocal<SimpleDateFormat> formatter = new ThreadLocal<SimpleDateFormat>() {
        @Override
        protected SimpleDateFormat initialValue() {
            return new SimpleDateFormat("yyyyMMdd HHmm");
        }
    };

    public String formatIt(Date date) {
        return formatter.get().format(date);
    }
}
ログイン後にコピー

この例では、SimpleDateFormat は非スレッドセーフ クラスです。 ThreadLocal 変数を利用することにより、各スレッドは SimpleDateFormat の独自のインスタンスを取得し、スレッドの安全性の問題を軽減します。 formatter.get() 呼び出しは、現在のスレッドに関連付けられたインスタンスをフェッチし、同期せずに日付のフォーマットを設定できるようにします。

その他のリソース

ThreadLocal 変数の詳細については、については、公式 Java ドキュメントを参照してください: [ThreadLocal Class (Java Platform SE) 8)](https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadLocal.html)

以上がJava で ThreadLocal 変数をいつどのように使用すればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート