Java Spring TransactionTemplate是否创建线程?
由于并发访问,我遇到了数据结构损坏的问题。我试图排除可能的原因,但我不确定SpringJava Spring TransactionTemplate是否创建线程?,java,spring,jdbc,concurrency,transactions,Java,Spring,Jdbc,Concurrency,Transactions,由于并发访问,我遇到了数据结构损坏的问题。我试图排除可能的原因,但我不确定SpringTransactionTemplate是如何工作的 有多个线程将独立列表传递给CallbackHandler的构造函数。然后将此CallbackHandler传递给TransactionTemplate的execute方法。任何地方都没有同步块 在execute方法完成之前和之后,在CallbackHandler中以及从调用线程访问该列表。据我所知,调用execute不会启动新的线程。因此,这应该是安全的 每个
TransactionTemplate
是如何工作的
有多个线程将独立列表传递给CallbackHandler
的构造函数。然后将此CallbackHandler
传递给TransactionTemplate
的execute方法。任何地方都没有同步块
在execute方法完成之前和之后,在CallbackHandler
中以及从调用线程访问该列表。据我所知,调用execute不会启动新的线程。因此,这应该是安全的
每个线程都创建自己的独立列表和CallbackHandler
,只有TransactionTemplate
对所有线程都是相同的
或者Spring会在某个时候创建一些新线程吗?您可以查看TransactionTemplate
的源代码
如您所见,没有创建新线程
你确定你的线程安全漏洞不在代码的另一个区域吗?也许看看你正在做的事情的一些例子会很有帮助。+1,除了不创建新线程之外,。是的,它位于代码的另一个区域。但是你的回答节省了我几个小时,没有在模板部分搜索:-)你能详细说明一下“由于并发访问而损坏的数据结构”吗。“那些”列表中有一个被破坏了吗?它在提交时损坏了吗?您的CallbackHandler
等中是否有任何共享状态/静态。。