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

Java 在指定时间内杀死长时间运行的线程,java,multithreading,jdbc,transactions,spring-transactions,Java,Multithreading,Jdbc,Transactions,Spring Transactions,我们正在尝试在数据库中导入一个对象(例如objectA),该对象将首先导入自身,然后再导入其子对象(例如objectAA,objectAB,objectAC等)。我们使用DefaultTransactionDefinition启动本地事务,执行方法导入对象,然后提交/回滚事务。方法导入对象将执行以下操作 从数据库中检索存储过程 执行查询以导入对象的内容 存储和处理查询返回的响应 对子对象执行上述所有操作 我想中断这个方法,以防时间太长。我尝试了以下技巧 使用线程导入对象。但是在方法中没有特定的位

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

  • 从数据库中检索存储过程
  • 执行查询以导入对象的内容
  • 存储和处理查询返回的响应
  • 对子对象执行上述所有操作
  • 我想中断这个方法,以防时间太长。我尝试了以下技巧

  • 使用线程导入对象。但是在方法中没有特定的位置会阻止导入对象的线程,因此,
    interrupt()
    不能用于停止线程
  • 方法中有多个数据库查询,因此,
    cancel()
    不能用于停止查询并导致方法返回
  • 目前,我正在研究defaultTransactionDefinition的
    setTimeout()
    method,以在指定的时间后终止事务,从而导致该方法返回。但它不能在两者之间终止该方法

  • 是否有任何方法可以在方法执行时终止该方法,然后相应地提交/回滚事务?

    只是澄清一下,您使用的是Spring的defaultTransactionDefinition???是的,我使用的是Spring的defaultTransactionDefinition。