【发布时间】:2021-02-02 17:15:20
【问题描述】:
如何确保每个线程都在同一个对象上工作?我们在 8 个并行线程上执行回归。我想将特定于线程的日志存储在地图中,然后在运行后对其中的数据进行处理。
public class Foo {
// map with thread name as a key and queue to keep its logs
public static final Map<String, LinkedList<String>> foofoo = new ConcurrentHashMap<>();
public static void addToQueue(String threadName, String log) {
//some logic here to add log to proper queue
}
}
我想确保每当任何正在运行的线程调用时:
Foo.addToQueue("foo", "fooo");
它正在访问同一个地图。 谢谢你的回复。我对多线程有点困惑,如果问题有点愚蠢,对不起。 祝你今天过得愉快! :)
编辑:在上面的示例中,我在初始化此对象时使用了 final 关键字,因为我知道它会阻止对象引用。但是它解决了我的问题吗?有没有更好的办法?
【问题讨论】:
-
你可以使用
Collections#synchronizedList(List) -
请提供正确的示例代码线程应该做什么。您只需发布一堆没有上下文的数据结构。
标签: java multithreading dictionary concurrency parallel-processing