2012-11-20 40 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