2012-11-04 84 views
1

我想在java中創建一個程序,其中線程是可觀察的對象,窗口是觀察者。我不明白的是,如何在更新方法上區分多個線程,它們都是做同樣的事情,以便我可以在窗口上單獨更新它們的位置。如何觀察多個可觀察的線程

+0

而不是讓他們都一樣,你可以將一個名稱與每個線程關聯。 –

回答

1

正如@PeterLawrey您可以使用名稱參數從Thread對象設置一個唯一的名稱,然後查詢您的帖子,發現其中一個是做什麼的註釋說明。構造函數如下:

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()該組中的所有線程。我希望它有幫助。乾杯

+0

+1我建議你使用Runnable並給它一個名稱字段。 –

+0

@PeterLawrey:現在不是'ThreadGroups'已經過時了嗎? – Cratylus

+0

@Cratylus AFAIk線程組僅適用於應用程序服務器。我不使用它們。 –

0

如果名稱是不夠的,你可以考慮使用一個ThreadStatic存儲每個線程其它信息:

class ThreadPosition { 
    [ThreadStatic] 
    private static int x; 

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