1

我正在尝试在 java 中创建一个程序,其中线程是可观察的对象,窗口是观察者。我不明白的是如何在 update 方法上区分几个线程,它们都做同样的事情,以便我可以单独更新它们在窗口上的位置。

4

2 回答 2

1

正如@PeterLawrey 在评论中所述,您可以使用Thread对象中的 name 参数设置一个唯一名称,然后查询您的 Threads 并查找哪个线程在做什么。构造函数如下:

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 为真,则此方法递归枚举此线程组的所有子组,并且还包括对这些子组中每个活动线程的引用。如果数组太短而无法容纳所有线程,则会默默忽略多余的线程。

以及getName()组中的所有线程。我希望它有所帮助。干杯

于 2012-11-04T13:02:09.747 回答
0

如果 name 不够,您可以考虑使用 aThreadStatic来存储有关每个线程的其他信息:

class ThreadPosition {
   [ThreadStatic]
   private static int x;

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