单身人士和线程

时间:2009-10-26 10:19:34

标签: java multithreading singleton singleton-methods

我的问题是线程排队。对于我的例子,我有一个Spring上下文。我在无状态类中有一个名为CalculateTax的方法。请求进来,创建一个线程(tA),最终进入CalculateTax方法。在相同的“时间范围”内,另一个请求进入并创建另一个线程(tB)。现在,这就是我想要了解的内容。在tA退出方法之前,AFAIK tB无法执行CalculateTax。这是真的吗?

3 个答案:

答案 0 :(得分:3)

只要CalculateTax只使用局部变量(即在方法中声明),就不会有任何线程同步问题,并且多个线程可以毫无问题地调用该方法。

但是,如果由于某种原因,CalculateTax使用在类级别定义的变量,并且您使用的是Singleton模式(您使用“singleton”标记了您的问题,那么我猜您是),您可能会遇到线程同步问题。

答案 1 :(得分:2)

如果它们是并行线程,那么它不是真的,每个线程都在它自己的执行堆栈中,所以它应该能够在tA执行时执行。

这就是Threads的用途。

答案 2 :(得分:0)

一般来说答案是不确定的。如果您的'request'来自远程客户端,则答案取决于用于服务公开的机制的实现细节。

但是,我不知道真正使代理序列化请求的远程通信框架,即假定由目标服务开发人员解决(例如,它为您的服务实现提供线程安全的任务或序列化)使用显式同步的所有请求等。)