1

私は変数を使用してThreadLocalいます(Clojureの変数を使用していますが、以下はThreadLocalJavaのプレーンの場合も同じです)。特定のコードパスが同じスレッドまたはで使用されるかどうかを確認できないという問題が頻繁に発生します。別のスレッド。私の管理下にあるコードの場合、これは明らかにそれほど大きな問題ではありませんが、多態的なサードパーティのコードの場合、シングルスレッド実行を想定しても安全かどうかを静的に判断する方法さえない場合があります。

これはsに固有の問題だと思う傾向がありますThreadLocalが、安全な方法でそれらを使用する方法についていくつかのアドバイスを聞きたいと思います。

4

2 に答える 2

9

次に、ThreadLocalsを使用しないでください。これらは、スレッドが存在するかのように、スレッドに関連付けられた変数が必要な場合に特に適していますMap<Thread,T>

于 2009-12-03T14:31:45.860 に答える
0

ThreadLocalの典型的なユースケース(私が知る限り)は、Webアプリケーションフレームワークです。HTTPフィルターは、着信要求でデータベース接続を取得し、その接続を静的ThreadLocalに格納します。接続を必要とする後続のすべてのコントローラーは、静的呼び出しを使用してフレームワークから接続を簡単に取得できます。応答が返されると、同じフィルターが接続を再び解放します。

于 2009-12-03T16:57:04.147 に答える