スレッドが監視可能なオブジェクトであり、ウィンドウがオブザーバーであるプログラムを Java で作成しようとしています。私が理解していないのは、すべて同じことを行う複数のスレッドを update メソッドで互いに区別して、ウィンドウ上の位置を個別に更新できるようにする方法です。
2 に答える
@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()
内のすべてのスレッドの。お役に立てば幸いです。乾杯
name だけでは不十分な場合は、 を使用してThreadStatic
各スレッドに関するその他の情報を保存することを検討できます。
class ThreadPosition {
[ThreadStatic]
private static int x;
/**
* Only call from thread.
**/
public static int getX()
{
return x;
}
}