单身和线程(singletons and threads)

2019-10-29 15:25发布

我的问题是关于正在排队线程。 在我的例子我有一个Spring上下文。 我有一个在一个无状态的类名为calculateTax的方法。 收到请求时,一个线程被创建(Ta)和其最终进入calculateTax的方法。 内相同的“时间帧”另一个请求进入和另一个线程被创建(TB)。 现在,这里是我想了解的东西。 直到TA已退出方法AFAIK TB不能执行calculateTax的。 这是真的?

Answer 1:

只要calculateTax的只使用局部变量(即在方法声明),你不会有任何线程同步问题和多线程可以调用方法没有问题。

但是,如果由于某种原因,calculateTax的使用在类级别定义的变量,并且您正在使用Singleton模式(你标记为“单身”你的问题,所以我想你),你可能有线程同步问题。



Answer 2:

不,这不是真的,如果他们是并行线程,每个线程都在其自己的执行堆栈所以它应该能够同时TA是执行时执行。

这是什么线程。



Answer 3:

一般来说,答案是不确定的。 如果你的“请求”来自远程客户端的答案取决于用于服务公开的机制的实施细节。

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



文章来源: singletons and threads