【发布时间】:2011-11-15 10:19:22
【问题描述】:
我有一个任务线程在两个独立的 tomcat 实例中运行。 Task 线程在特定 where 条件下同时读取(使用 select)TASKS 表,然后进行一些处理。
问题是,有时两个线程都会选择同一个任务,因此该任务会执行两次。 我的问题是如何让两个线程不从 TASKS 表中读取同一组数据
【问题讨论】:
-
你必须考虑同步和隔离。
-
不可能在 JAVA 级别进行同步,因为线程在两个单独的 tomcat 机器中运行。您是指数据库级别...如果是这样,请添加更多详细信息,说明最适合哪种隔离策略以及如何使用 .thankx
-
您必须将数据库连接上的隔离设置为可序列化。它会花费你一些性能,但你会得到它的正确性。
-
是的,这是一种选择,但是由于我使用休眠将隔离设置为可序列化,它会影响整个应用程序的性能。有没有办法设置特定于表的隔离策略
标签: java multithreading isolation-level transaction-isolation