0

Javaプログラムでは、複数のスレッドで同じ関数を実行しています。私がやりたいのはこれです-

  1. 特定の実行中のスレッドを特定します。たとえば、実行中のスレッドが2つある場合、外部関数からそれらのスレッドの1つにアクセスするにはどうすればよいですか。(外部関数は、スレッドを持つ同じJavaアプリの一部です)
  2. 上記の両方のスレッドで使用されている「x」という名前の変数があるとします。thread1とthread2で「x」の個別の値を保存および取得できますか?これは、スレッドで使用される変数のデフォルトの動作ですか?
  3. 特定のスレッドの変数の値にアクセス/更新します。たとえば、「スレッド1」で使用されている「x」の値を更新したいと思います。
  4. 1つの(特定の)実行中のスレッドを終了します。たとえば、Thread1を終了したいと思います(上記の2つの実行中のスレッドから)。
4

1 に答える 1

1

の回答

  1. これを行うにはいくつかの方法があります。あなたはどちらかをすることができます。ThreadUtil名前と内部のUtilクラスには。がありstatic Set<Thread>ます。作成したスレッドを追加して、スレッドの実行が終了するたびに設定および削除できます。または、メソッド、メソッドを拡張しThreadPoolExecutorてオーバーライドし、上記と同じことを行うことができます。セットを使用して、実行中のスレッドを取得できます。名前で保存および取得する場合は、マップを使用できます。beforeExecuteafterExecute
  2. これは、ThreadLocalクラスを使用することで可能になります。使用方法については、この投稿を参照してくださいThreadLocal
  3. で可能ThreadLocal
  4. スレッド内のフラグ(boolean stop)を使用してこれを行うことができ、このフラグを次のように設定するメソッドを使用できます。true
于 2013-02-05T06:43:25.090 に答える