Java 同步与原子参考

Java 同步与原子参考,java,spring,multithreading,synchronization,mutual-exclusion,Java,Spring,Multithreading,Synchronization,Mutual Exclusion,我正在尝试撰写系统设计,其中一个模块在共享资源上工作。 因此,为了避免数据被其他并发请求修改,我有几个与并发请求/线程安全相关的查询: 问题: a) 如果我的应用程序不创建任何显式线程(如thread/Runnable),而是接收并发HTTP请求(如测试工具Load Runner),是否需要synchronized块 b) 当应用程序本质上不是多线程而是处理并发HTTP请求时,automicreference是synchronized(objectField)块的一个好选择。您通常需要的是@Tr

我正在尝试撰写系统设计,其中一个模块在共享资源上工作。 因此,为了避免数据被其他并发请求修改,我有几个与并发请求/线程安全相关的查询:

问题:

a) 如果我的应用程序不创建任何显式线程(如thread/Runnable),而是接收并发HTTP请求(如测试工具Load Runner),是否需要
synchronized


b) 当应用程序本质上不是多线程而是处理并发HTTP请求时,
automicreference
是synchronized(objectField)块的一个好选择。

您通常需要的是
@Transactional
synchronized
在服务器环境中没有用处,因为它只约束应用程序的单个副本。事务是确保与多个实例的一致性的方式。如果有多台计算机访问同一帐户id,则不能使用synchronized,因为只能在单个JVM中进行同步。因此,它不会阻止不同的JVM访问同一个帐户。可能会有帮助。还要注意,
toString()
方法每次都可能创建一个新字符串,因此使用它进行同步是不安全的。