在指定时间内杀死长时间运行的线程

时间:2017-02-28 08:18:57

标签: java multithreading jdbc transactions spring-transactions

我们正在尝试在数据库中导入一个对象(例如objectA),该对象将首先导入自身,然后导入其子对象(例如objectAAobjectAB,{{1等)。我们使用DefaultTransactionDefinition启动本地事务,执行方法导入对象,然后提交/回滚事务。导入对象的方法将执行以下操作,

  1. 从数据库中检索存储过程。
  2. 执行查询以导入对象的内容。
  3. 存储并处理查询返回的响应。
  4. 对子对象执行上述所有操作。
  5. 我希望在花费太长时间时中断此方法。我尝试了以下技巧,

    1. 使用线程导入对象。但是没有特定的地方可以在方法中阻止导入对象的线程,因此,objectAC不能用于停止线程。
    2. 方法中有多个数据库查询,因此,interrupt()不能用于STOP查询并导致方法返回。
    3. 目前,我正在调查defaultTransactionDefinition的cancel()方法,以在一段指定时间后终止事务,这将导致该方法返回。但它无法在中间终止该方法。
    4. 有没有办法在执行时终止方法,然后相应地提交/回滚事务?

0 个答案:

没有答案