关于这个问题,我有一个子问题
Are non-synchronised static methods thread safe if they don't modify static class variables?
如果我在 Singleton 类中定义了此方法
public static Date getDateDiff(Date a, Date b){
return a-b;
}
如果两个线程同时并发调用该方法并传递不同的a,b,那么它们会得到正确的结果吗?
我的理解是他们应该得到,因为每个都传递不同的日期对象,而其他对象无法访问......
在什么情况下会因为覆盖 Date 对象而得到错误的结果?
最佳答案
是的,两个线程都会得到正确的结果。错误结果的条件是,如果存在任何其他非线程安全代码,其中另一个线程可能正在修改由其他线程之一传递的 a 或 b。就像您链接到的问题中的其他答案一样,如果 a 或 b 与另一个线程共享,并且它们在另一个线程使用它时修改它,您可能会遇到问题。
关于Java静态线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24935753/