提问人:dhakshna 提问时间:11/17/2023 更新时间:11/17/2023 访问量:50
如何同步哈希图?[已结束]
How to synchronize an hashmap? [closed]
问:
我想同时运行我的两个线程,但预期的输出必须是这样的: 0=0 , 1001=1001 , 1002=1002 , 1003=1003 , 1=1 ...(顺序不相同)。
我知道可以使用 ConcurrentHashMap 或 HashTable 实现它,但我希望它在普通的 HashMap 中实现。我使用“锁定”概念实现了它,但我只想尝试使用“同步”块。
但是当我运行下面的代码时,我收到的是 0=0,1=1,2=2...1000=1000,1001=1001,1002=1002...2000=2000
也欢迎线程的任何更改......
提前致谢。
public static void main(String[] args) {
HashMap<Integer,Integer> map = new HashMap<>();
Thread t1 = new Thread(()->
{
for (int i = 0; i <= 1000; i++) {
synchronized (map)
{
map.put(i,i);
}
}
});
Thread t2 = new Thread(()->
{
for (int i = 1001; i <= 2000; i++) {
synchronized (map)
{
map.put(i,i);
}
}
});
t1.start();
t2.start();
try {
t1.join();
t2.join();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
System.out.println(map);
System.out.println(map.size());
}
答: 暂无答案
评论
HashMap
HashMap
Integer