• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExecutorService.newFixedT)

ExecutorService.newFixedThreadPool()で生成されたスレッド達の名前を取得する方法

このQ&Aのポイント
  • JavaのExecutorService.newFixedThreadPool()メソッドで生成されたスレッド達の名前を取得する方法を教えてください。
  • 質問者は、JavaのExecutorService.newFixedThreadPool()メソッドを使用して生成されたスレッド達の名前を取得したいと考えています。具体的な方法についてアドバイスをお願いします。
  • 質問者は、JavaのExecutorService.newFixedThreadPool()メソッドで生成されたスレッド達の名前を取得するプログラムを作成したいと思っています。具体的なコード例や手順について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.1

> その時点でロックを保持しているスレッドの getName() メソッドを呼び出す ロックを保持している = synchronized ブロックの中を実行している と考えてよいなら、単に synchronized ブロックの中に System.out.println(Thread.currentThread().getName()); と書けば良いのでは? ちなみに SharedObject はスレッドセーフになっていませんよね? t0 や t1 が volatile でなく同期化無しの参照・変更があるので、他のスレッドでの変更が中途半端に見えたり見えなかったりする可能性が有りますよね。ただし、他のスレッドでの変更が正確に反映されたとしても、それが期待される動作とも思えません。 t0,t1,xはローカル変数にすべきでは?

参考URL:
http://java.sun.com/javase/ja/6/docs/ja/api/java/lang/Thread.html#currentThread%28%29
ftdr5v6bn
質問者

お礼

ありがとうございました。 APIドキュメントは何回も見ていたのですが、currentThread()だけ見落としていました なんとも恥ずかしや...(^^; しかもスレッドセーフでない点まで指摘していただいて感謝しております。 よく考えてみたら、t0,t1,xはスレッドセーフでないですね。 かなり基本的な事でつまづいていたようです。 ありがとうございました。