Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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 Spring TransactionTemplate是否创建线程?_Java_Spring_Jdbc_Concurrency_Transactions - Fatal编程技术网

Java Spring TransactionTemplate是否创建线程?

Java Spring TransactionTemplate是否创建线程?,java,spring,jdbc,concurrency,transactions,Java,Spring,Jdbc,Concurrency,Transactions,由于并发访问,我遇到了数据结构损坏的问题。我试图排除可能的原因,但我不确定SpringTransactionTemplate是如何工作的 有多个线程将独立列表传递给CallbackHandler的构造函数。然后将此CallbackHandler传递给TransactionTemplate的execute方法。任何地方都没有同步块 在execute方法完成之前和之后,在CallbackHandler中以及从调用线程访问该列表。据我所知,调用execute不会启动新的线程。因此,这应该是安全的 每个

由于并发访问,我遇到了数据结构损坏的问题。我试图排除可能的原因,但我不确定Spring
TransactionTemplate
是如何工作的

有多个线程将独立列表传递给
CallbackHandler
的构造函数。然后将此
CallbackHandler
传递给
TransactionTemplate
的execute方法。任何地方都没有同步块

在execute方法完成之前和之后,在
CallbackHandler
中以及从调用线程访问该列表。据我所知,调用execute不会启动新的
线程。因此,这应该是安全的

每个线程都创建自己的独立列表和
CallbackHandler
,只有
TransactionTemplate
对所有线程都是相同的


或者Spring会在某个时候创建一些新线程吗?

您可以查看
TransactionTemplate
的源代码

如您所见,没有创建新线程


你确定你的线程安全漏洞不在代码的另一个区域吗?也许看看你正在做的事情的一些例子会很有帮助。

+1,除了不创建新线程之外,。是的,它位于代码的另一个区域。但是你的回答节省了我几个小时,没有在模板部分搜索:-)你能详细说明一下“由于并发访问而损坏的数据结构”吗。“那些”列表中有一个被破坏了吗?它在提交时损坏了吗?您的
CallbackHandler
等中是否有任何共享状态/静态。。