2012-11-20 76 views
-1

如何從線程外部訪問線程變量,我在想要從主程序或服務訪問的線程內部有散列映射。如何訪問線程變量?

public class Sample { 

class Thread { 

//private synchronized hashmap declared here 
} 

} 

我要訪問其他Thread類中聲明的HashMap中可以說ABC類

+6

沒有看到你的代碼,很難說比以下更多的東西:alsmot和你從另一個類訪問類中的變量的方式一樣。這將需要一些同步來保證線程安全。 – assylias

+0

什麼是「內線」?在基線程類(從Thread擴展或實現Runnable)中,還是在線程上執行的方法的局部變量內? –

+0

@assylias如果您發佈該答案,我也會將其+1,fwiw – durron597

回答

0

多線程訪問數據,真正的問題是同步的。如果您有數據地圖,請將其設置爲ConcurrentHashMap,然後放置它以便可以訪問它。現在您可以訪問地圖中的數據。請注意,代碼中可能存在其他需要更多同步的依賴項,但至少訪問映射中的數據是安全的。

更新:在你的情況我會做這樣的事情:

public class Sample { 
    Map mMyMap = new ConcurrentHashMap(); 

    void foo() { 
     // Access from here 
    } 

    class Thread { 
     // And from here 
    } 
} 

您可以將其變爲私有,但有太多的話要說,內部類以及私人超出了這個問題的範圍。

+0

謝謝。我有併發哈希映射。但是如何從我的主程序訪問線程以外的線程是我現在關心的問題。 – user1671219

+0

你是否指其他類/對象?你的線程類就像其他類一樣。它正如他們在上面的評論中所說的那樣共享堆。你可以使用getter和setter方法,字段等。如果你發佈了一些代碼,它會更容易幫助你。 –

+0

好的...我更新我的查詢 – user1671219