Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单件和线程_Java_Multithreading_Singleton_Singleton Methods - Fatal编程技术网

Java 单件和线程

Java 单件和线程,java,multithreading,singleton,singleton-methods,Java,Multithreading,Singleton,Singleton Methods,我的问题是关于线程排队的问题。对于我的例子,我有一个Spring上下文。我在一个无状态类中有一个名为CalculateTax的方法。一个请求进入,一个线程被创建(tA),它最终进入CalculateTax方法。在相同的“时间范围”内,另一个请求进入并创建另一个线程(tB)。现在,我想了解的是。在tA退出该方法之前,AFAIK tB无法执行CalculateAX。这是真的吗?不,如果它们是并行线程,则不是真的,每个线程都在自己的执行堆栈中,因此它应该能够在tA执行时执行 这就是线程的用途。不,如果

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

不,如果它们是并行线程,则不是真的,每个线程都在自己的执行堆栈中,因此它应该能够在tA执行时执行


这就是线程的用途。

不,如果它们是并行线程,则不是这样,每个线程都在其自己的执行堆栈中,因此它应该能够在tA执行时执行


这就是线程的用途。

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


但是,如果出于某种原因,CalculateTax使用在类级别定义的变量,并且您使用的是单例模式(您用“单例”标记了您的问题,因此我猜您是单例),则可能存在线程同步问题。

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


但是,如果出于某种原因,CalculateTax使用在类级别定义的变量,并且您使用的是单例模式(您将问题标记为“单例”,因此我猜您是),则可能存在线程同步问题。

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


但是,我不知道远程通信框架是否真的让代理序列化请求,也就是说,假设由目标服务开发人员处理(例如,您的任务是为服务实现提供线程安全,或者使用显式同步等序列化所有请求).

一般来说,答案没有定义。如果您的“请求”来自远程客户端,则答案取决于用于服务公开的机制的实现细节


但是,我不知道远程通信框架是否真的让代理序列化请求,也就是说,假设由目标服务开发人员处理(例如,您的任务是为服务实现提供线程安全,或者使用显式同步等序列化所有请求).

除非您没有同步该方法。不,您不需要。。。但如果你这样做,每个线程都会等待其他线程结束操作,然后再执行自己。除非你没有使方法同步。不,这不是你需要的。。。但是,如果你这样做,每个线程都会等待其他线程结束操作,然后再执行自己。问题中没有引用单例。spring上下文是单例还是可以删除整个单例?也许他的意思是,他在spring上下文中将他的bean声明为单例(春季术语,不一定是术语的经典含义),因此所有请求都会得到相同的对象实例,这就引起了对并发性的关注。问题中没有引用单例。spring上下文是单例还是可以删除整个单例?也许他的意思是,他在spring上下文中将他的bean声明为单例(Spring术语,不一定是经典意义上的术语),因此所有请求都获得相同的对象实例——因此需要考虑并发性。