java多线程批处理 心跳监控

最近工作上遇到这么一个问题:需要在指定时间,在后台起5个线程执行批量任务。对应的需要有一定的监控机制来观察这5个线程的运行情况。如果该5个线程在指定任务未完成之前异常退出。需要重新起一个线程来顶替他。目前我的方案是利用@schedule在指定时间起五个线程执行任务。并记录下这五个线程的threadid至数据库中保存。另外启动一个监控线程,定时去取这五个现成的threadid,遍历线程组找到该线程并观察线程状态。

那么问题来了。请问各位大神!有没有一套比较成熟的方案可以解决上述问题?或者说有没有什么比较好的监控线程的方式?

阅读 6.6k
1 个回答

为什么要监控线程?有异常的时候线程不退出不就好了么?比如这样:

while(tasks.getTaskLeft().size()>0) {
    Task task = tasks.getNextTask();
    try{
        processTask(task);
    } catch (Exception e) {
        task.setError(true);
        log.error("Fail to process task", e);
    }
    task.setProcessed(true);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题