gpt4 book ai didi

run() 方法内的 Java 同步

转载 作者:行者123 更新时间:2023-12-02 06:54:48 25 4
gpt4 key购买 nike

这是我的类(class):

public class OnlineDataProcessor implements Runnable
{
private final Map<String, VehicleData> recentDataMapping = new HashMap<String,VehicleData>();


public void run()
{
//Here i collect data from database and create objects VehicleData and put them in recentDataMapping.
}

public String toXML(String vehicleId)
{
//Here i take VehicleData object from recentDataMapping and work with it.

}
}

然后在系统启动时我有这个:

OnlineDataProcessor onlineDataProcessor = new OnlineDataProcessor();  
Thread a = new Thread(onlineDataProcessor);
a.start();

然后根据 servlet 请求,我有以下代码:

String vehicleId = request.getParameter("vehicleId");
String str = onlineDataProcessor.toXML(vehicleId);

所以问题是......

我是否需要同步对 run() 和 toXML() 方法内的 recentDataMappingVehicleData 对象的访问?

最佳答案

由于您没有使用 ConcurrentHashMap,因此对映射的任何访问都应该同步,因为它是共享资源。您只需要将实际添加的内容同步到 map 中 - 所有其他工作都可以在同步部分之外完成。

如果您只是想确保代码是线程安全的,请使用 ConcurrentHasMap。

关于run() 方法内的 Java 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17507955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com