【问题标题】:Is spring @transactional thread safe?spring @transactional 线程安全吗?
【发布时间】:2016-07-20 17:30:38
【问题描述】:

我在我的一个班级上使用了@Transactional 并在多线程环境中使用它?据我了解,它将在线程本地环境中执行并且是线程安全的。

现在我的用例是从帐户中提取金额?如果读取的账户金额是脏的,会不会有透支的情况?我不确定现在这样是否安全,或者我需要同步我的功能。

任何建议都会受到高度重视。

【问题讨论】:

  • Spring 使用底层数据库实现来处理事务,因此它们与底层数据库一样是线程安全的。
  • 事务隔离与线程安全是不同的问题。
  • 内森是对的。查看数据库和数据库访问 Java API(JPA、JDBC 等)提供的锁定机制
  • @Nathan,David 如何在 JPA 或 JDBC 中实现事务隔离任何指针或起点?你能推荐一些好的参考资料吗?
  • @Naresh Kumar 查找更新、乐观锁和悲观锁的选择。它们是满足您需求的不同方式。

标签: java spring multithreading


【解决方案1】:

你需要设置你的事务隔离级别来防止来自数据库的脏读,不用担心线程安全。数据库负责处理这个问题的“脏读”方面——而不是 Spring 的线程模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多