この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。
建築家
建築家
リスト
放送
茶屋
インテリジェントAI会話
.NETキャリア&テクニカルカレッジ
ちっちゃいなクズブログ
この版
利用者
Architect_Programmer_Code農業ネットワーク
»
建築家
›
プログラミング
›
ジャワ
›
Java ThreadLocalの原則とマルチスレッドの再利用はデータの混乱を引き起こします...
眺める:
27855
|
答える:
1
[出典]
Java ThreadLocalの原則とマルチスレッドの再利用はデータの混雑を招きます
[リンクをコピー]
クズども
掲載地 2021/11/01 11:45:36
|
|
|
|
プログラミングでは、変数の内容を渡すメソッドパラメータを定義します。実行メソッドレベルが深い場合、各メソッドはパスするパラメータを定義する必要があります。この時点で、すべてのメソッドが同じスレッド上で実行されていれば、ThreadLocalの値を設定して読み取ることができます。
ThreadLocal クラスはスレッド内のローカル変数を提供するために使用されます。 これらの変数がマルチスレッド環境でアクセス(get/set)される場合、各スレッドの変数は他のスレッドの変数から比較的独立しています。
ThreadLocalはセットメソッドを実行する際にまず現在のスレッド(Thread t = Thread.currentThread())を取得し、現在のスレッドを使ってThreadLocalMapを取得します。マップが空でなければ、現在のスレッドに以前にバインドされたマップがあることを意味します。そのマップの値を更新します。そうでなければ、自身をキーとして割り当ててその値をマップに配置し、変数とスレッドのバインディングを実現します。
コードをテストし、スレッドプールを最大5スレッドに設定し、マルチスレッドの場合にThreadLocal getメソッドを呼び出すと、ThreadLocalデータ(
他のスレッドによって設定されたデータ
)、私たち
現在のスレッドではThreadLocalセットメソッドが呼び出されてデータを設定することはありません
、下図に示されているように:
エラーの原因:
スレッドが再利用されると、ThreadLocalから最初に得られた値は、他のスレッドの残り値である可能性が高いです
。
なぜなら、現在のスレッドでThreadLocalを終えた後、
迅速な削除を依頼して削除してください
。 以下に示すように:
コード:
ログインが見えます。
(終わり)
先の:
Dockerはコンテナの再起動設定や一括停止コンテナを調べます
次に:
ジェンキンス(5)プロジェクトグループの発表
関連記事
•
Javaワークフロー:Activiti、Flowable、Camunda と
•
toPlainString, toEngineeringString, toString for BigDecimal in Java
•
Windows Mavenの設定チュートリアルをダウンロードしてインストールしてください
•
C#の怠惰がスレッドを安全に保つ方法
•
ThreadStatic、CallContext、HttpContextの違い ASP.NET
•
.NET/C# RSA PEM フォーマットの暗号化および復号化
•
.NET Coreの高性能キューチャネルが使用されています
•
[ターン] 文のタスク。結果はロックされます。他にどうやってこのコードを書くのですか?
•
[翻訳] ValueTaskとTaskの違いを用いるためのNET
•
JavaについてのtoString()メソッドのオーバーライドについて
トビウオ
掲載地 2021/11/02 21:30:12
|
また学びに来た。
閲覧したセクション
リソースの共有
Windows/Linux
C/C++
安全な攻防
.Net/C#
Microsoft SQL Server
技術チャット
レジャー灌漑
ごみ箱
ネットワーク技術
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。
Mail To:help@itsvse.com