如何从线程外部访问线程变量,我在想要从主程序或服务访问的线程内部有散列映射。如何访问线程变量?
public class Sample {
class Thread {
//private synchronized hashmap declared here
}
}
我要访问其他Thread类中声明的HashMap中可以说ABC类
如何从线程外部访问线程变量,我在想要从主程序或服务访问的线程内部有散列映射。如何访问线程变量?
public class Sample {
class Thread {
//private synchronized hashmap declared here
}
}
我要访问其他Thread类中声明的HashMap中可以说ABC类
多线程访问数据,真正的问题是同步的。如果您有数据地图,请将其设置为ConcurrentHashMap,然后放置它以便可以访问它。现在您可以访问地图中的数据。请注意,代码中可能存在其他需要更多同步的依赖项,但至少访问映射中的数据是安全的。
更新:在你的情况我会做这样的事情:
public class Sample {
Map mMyMap = new ConcurrentHashMap();
void foo() {
// Access from here
}
class Thread {
// And from here
}
}
您可以将其变为私有,但有太多的话要说,内部类以及私人超出了这个问题的范围。
谢谢。我有并发哈希映射。但是如何从我的主程序访问线程以外的线程是我现在关心的问题。 – user1671219
你是否指其他类/对象?你的线程类就像其他类一样。它正如他们在上面的评论中所说的那样共享堆。你可以使用getter和setter方法,字段等。如果你发布了一些代码,它会更容易帮助你。 –
好的...我更新我的查询 – user1671219
没有看到你的代码,很难说比以下更多的东西:alsmot和你从另一个类访问类中的变量的方式一样。这将需要一些同步来保证线程安全。 – assylias
什么是“内线”?在基线程类(从Thread扩展或实现Runnable)中,还是在线程上执行的方法的局部变量内? –
@assylias如果您发布该答案,我也会将其+1,fwiw – durron597