`

线程 福建移动批量复核太慢,后来就改用线程,但是没有效果

 
阅读更多

/**
 *
 * 批量复核线程
 *
 * @author ThinkPad
 *
 */
class BatchCheckThread implements Runnable {
 private String comment;
 private List<TaskInstanceBean> tibs;
 private User user;
 private String strDN;
 private CountDownLatch countDown = null;
 //gets sets

 @Override
 public void run() {
  try {
   long begin = System.currentTimeMillis();
   Logger.getLogger(BatchCheckThread.class).info("开始执行线程:" + Thread.currentThread().getName() + ",条数:" + tibs.size());
   execute();
   Logger.getLogger(BatchCheckThread.class).info("线程:" + Thread.currentThread().getName() + ",耗时:" + (System.currentTimeMillis() - begin) + " ms");
  } catch(Exception e) {
   new RuntimeException(e);
  } finally {
   if(null != countDown) countDown.countDown();
  }
 }
 
 private void execute() {
  if(null == tibs) return;
  for(TaskInstanceBean tib : tibs) {
   List<Transition> trans = tib.getAvailableTransitions();
   for(Transition tran : trans){
    String tansName = tran.getName();
    if(isCanApproval(comment, tib, tran)){
     ServiceFactory.getInstance().getJbpmProcessService().handelTask(tib.getTaskInstanceId(), tansName, user, "批量"+tansName, strDN ,null);
     break;
    }
   }
  }
 }
 
 private boolean isCanApproval(String comment, TaskInstanceBean tib, Transition tran) {
  if(tib.getTaskInstance().getName().equals("复核") && "同意".equals(comment)) {
   return "送审批".equals(tran.getName());
  }
  return tran.getName().equals(comment + tib.getTaskInstance().getName());
 }
}

 

--调用线程

for(List<TaskInstanceBean> o : oList) {
 BatchCheckThread t = new BatchCheckThread();
 t.setComment(comment);
 t.setStrDN(strDN);
 t.setTibs(o);
 t.setUser(this.getCurrentUser(request));
 
 t.setCountDown(end);
 new Thread(t).start();
}
// 等待所有线程结束
end.await();

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

Global site tag (gtag.js) - Google Analytics