1

スレッドが監視可能なオブジェクトであり、ウィンドウがオブザーバーであるプログラムを Java で作成しようとしています。私が理解していないのは、すべて同じことを行う複数のスレッドを update メソッドで互いに区別して、ウィンドウ上の位置を個別に更新できるようにする方法です。

4

2 に答える 2

1

@PeterLawrey のコメントで述べられているように、Threadオブジェクトの name 引数を使用して一意の名前を設定し、スレッドをクエリして、どのスレッドが何をしているかを見つけることができます。コンストラクタは次のとおりです。

public Thread(String name)
    Allocates a new Thread object. This constructor has the same effect as Thread (null, null, name).
Parameters:
    name - the name of the new thread

ただし、実行後にスレッドに簡単にアクセスし、追跡するには、ThreadGroupオブジェクトの使用をお勧めします。API ドキュメントから:

スレッド グループは、一連のスレッドを表します。さらに、スレッド グループには、他のスレッド グループを含めることもできます。スレッド グループは、最初のスレッド グループを除くすべてのスレッド グループが親を持つツリーを形成します。

したがって、メソッドpublic int enumerate(Thread[] list, boolean recurse)を使用できます

どれの

このスレッド グループ内のすべてのアクティブなスレッドを、指定された配列にコピーします。recurse が true の場合、このメソッドはこのスレッド グループのすべてのサブグループを再帰的に列挙し、これらのサブグループ内のすべてのアクティブなスレッドへの参照も含めます。配列が短すぎてすべてのスレッドを保持できない場合、余分なスレッドは黙って無視されます。

グループgetName()内のすべてのスレッドの。お役に立てば幸いです。乾杯

于 2012-11-04T13:02:09.747 に答える
0

name だけでは不十分な場合は、 を使用してThreadStatic各スレッドに関するその他の情報を保存することを検討できます。

class ThreadPosition {
   [ThreadStatic]
   private static int x;

   /**
   * Only call from thread.
   **/
   public static int getX()
   {
     return x;
   }
}
于 2012-11-04T13:33:29.750 に答える