如何观察多个可观察线程

时间:2012-11-04 12:56:27

标签: java multithreading observer-pattern observable

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

2 个答案:

答案 0 :(得分: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为true,则此方法以递归方式枚举此线程组的所有子组,并且还包括对这些子组中每个活动线程的引用。如果数组太短而无法容纳所有线程,则会以静默方式忽略额外的线程。

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

答案 1 :(得分:0)

如果名称不够,您可以考虑使用ThreadStatic存储有关每个帖子的其他信息:

class ThreadPosition {
   [ThreadStatic]
   private static int x;

   /**
   * Only call from thread.
   **/
   public static int getX()
   {
     return x;
   }
}