java 字符串原子变量,Java分配问题 – 这是原子吗?

我有一些关于

Java的问题.

>弦

我有一个班:

public class Test {

private String s;

public synchronized void setS(String str){

s = s + " - " + str;

}

public String getS(){

return s;

}

}

我在我的设置器中使用“同步”,并避免在我的getter,因为在我的应用程序,有大量的数据获取,很少的设置.必须同步设置以避免不一致.我的问题是:获取并设置变量原子?我的意思是,在多线程环境中,Thread1即将设置变量s,而Thread2即将获得“s”.有没有什么方法可以获得与旧的值或s的新值不同的东西(假设我们只有两个线程)?

在我的应用程序中,获取新值并不是问题,而不是老问题.但是我能得到别的东西吗?

> HashMap的获取和放置怎么样?

考虑到这一点

public class Test {

private Map map = Collections.synchronizedMap(new HashMap());

public synchronized void setMapElement(Integer key,String value){

map.put(key,value);

}

public String getValue(Integer key){

return map.get(key);

}

}

放置和获得原子? HashMap如何处理将元素放入其中?它是否首先删除旧的值,并把现在的一个?我能否得到旧的价值或新的价值?

提前致谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值