java – 如何在多线程之间共享一个事务
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 如何在多线程之间共享一个事务,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1004字,纯文字阅读大概需要2分钟。
内容图文
![java – 如何在多线程之间共享一个事务](/upload/InfoBanner/zyjiaocheng/701/d04af9637f0243b8a61eacdfa910b3ed.jpg)
我们遇到了一个适用于多线程的场景.
在主线程中,做一些逻辑并更新数据库,在某一点上,它会调用另一个服务来更新数据库,这是在另一个线程中运行的.
我们希望两个线程共享相同的事务,这意味着,任一线程中的任一操作都失败,那么另一个线程中的操作也将被回滚.
但是工作了几天,我发现一些帖子说JTA不支持多线程.
目前我们使用Bitronix作为JTA提供程序,有没有人知道Bitronix是否支持一个Transaction中的多线程?或者是否有任何其他JTA提供程序支持此(独立JTA提供程序而非J2EE容器)?
解决方法:
“多个线程可能同时与同一个全局事务相关联.”
– JTA规范v1.1,第3.2节,第13页.
JBossTS将处理没问题.除了检查交易行为之外,困难实际上并不是事务管理器.您还需要正确处理与资源管理器(即数据库)的连接.如果您在线程之间共享一个连接,则不一定会以串行方式运行任何加速,因为除非驱动程序支持高效多路复用,否则它可能是瓶颈.另一方面,如果您使用多个连接,则需要确保驱动程序明智地实现isSameRM以避免2PC,并且如果线程需要看到彼此对数据库的未提交更改,则还允许事务分支锁共享(紧密耦合).所以除了一个好的事务管理器之外,你还需要一个好的连接管理器,例如JCA实现和良好的数据库驱动程序.祝你好运.
内容总结
以上是互联网集市为您收集整理的java – 如何在多线程之间共享一个事务全部内容,希望文章能够帮你解决java – 如何在多线程之间共享一个事务所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。