2017-02-17 14 views
1

ThreadLocalのように、Threadのメンバ変数への参照を戻すことはできますか?ThreadLocalとJavaのスレッド内のメンバ変数

たとえば、カウンタ変数を使用して、ThreadLocal変数のThreadによって処理された要求の量に対処するとします。スレッドを再利用するためにThreadPool Executerを使用していると考えてください。現在、すべてのスレッドは、ThreadLocalカウンタ変数への参照を保持し、要求ごとに独自のコピーをインクリメントできます。 同様の方法で、もし私がRunnableの中にMember変数を持っていれば、そのリファレンスを取得することはできますか?とにかくスレッドは再利用されています。

答えて

1

メンバー変数がRunnable内にある場合は、そのリファレンスを取得できますか?

「実行可能ファイル」と言うとき、あなたはRunnableインターフェイスを実装するオブジェクトについて話しています。 Runnableについては何も魔法はありません。run()メソッドについては何も魔法はありません。

Runnableオブジェクトのメンバ変数は、他のオブジェクトのメンバ変数と似ていて、同じ方法でコードにアクセスします。


あなたがプログラムにThreadLocalを見るとPSは、通常、それはシングルスレッドであることを使用するプログラム

  • を意味し、
  • それはstatic変数でその状態の多くを維持し、
  • 誰かが後で考えてマルチスレッドを追加しました。
  • スレッドごとにその静的状態の一部が重複しているのは当然です。

私は静的変数に依存して任意のコードを書くことではない努力ので、私は、新しいプログラムでThreadLocalを使用することはほとんどないだろう、とあなたは非静的データ用ThreadLocalを使用している場合、あなたはおそらく作っていますあなたのプログラムの方法はそれよりも複雑です。

関連する問題