Java静态线程安全

标签 java multithreading methods static

关于这个问题,我有一个子问题

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/

相关文章:

C# - 在 XX 秒后停止线程

java - 方法中的短缩窄转换

java - 如果重写 equals() 方法,Java 中是否可以比较对类实例的引用?

java - 隔离级别和不一致状态

java - 确定线程的顺序

java - 如何将textview放置在布局的随机位置的相对布局中?

java - com.sun.HttpServer 套接字积压

java - 为什么说我没弄错?

java - AVD 中的套接字编程

java - Spring依赖注入(inject)通用服务类