为什么这个线程(WriteData)没有做它的功能?

我正在练习 Semaphore 类,我创建了两个线程,其中一个将数据写入“Shared”类中的 HashMap,另一个从 Shared 类中读取数据。


所以我的问题是,当我读取数据时,它只显示先前在 Shared 类中添加的数据,而不是更新的数据。我不知道我在哪里失踪了。


如果是这样,我应该从“Writedata”类中读取线程如何返回 HashMap。


class Shared {


    Map<String, Integer> hashmap = new HashMap<String, Integer>();

    {

        hashmap.put("kishore", 797979);

        hashmap.put("nanesg", 8768787);

        hashmap.put("mahesh", 842803);

        hashmap.put("srikar", 7979980);

    }


    public void puthash(String name, Integer in, Map<String, Integer> hashmap) {

        hashmap.put(name, in);

    }


    public Map<String, Integer> gethash() {

        return this.hashmap;

    }


}


这是它的输出:


writeThread trying to get permit

read Thread trying to acquiring the permit 

write Thread acquires the permit 

write Thread relesing the permit 

read Thread acquires the permit 

reading data in hashmap, Here is the data: 

nanesg  : 8768787

mahesh  : 842803

kishore  : 797979

srikar  : 7979980

read Thread relesing the permit 

为什么 WriteData 线程(特别是函数)没有添加数据。该功能有什么问题?


慕村225694
浏览 155回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java