`

线程相关内容 批量复核触发线程

 
阅读更多

--在方法内部启动线程

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();
}

 

BatchCheckThread  是一个内部类,然后在里面添加线程的代码

 

--跟踪哪个线程的里面执行的情况

Logger.getLogger(BatchCheckThread.class).info("开始执行线程:" + Thread.currentThread().getName() + ",条数:" + tibs.size());

 

--内部类里面执行线程

class BatchCheckThread implements Runnable {
 private String comment;
 private List<TaskInstanceBean> tibs;
 private User user;
 private String strDN;
 private CountDownLatch countDown = null;
 
 public void setCountDown(CountDownLatch countDown) {
  this.countDown = countDown;
 }
 public String getComment() {
  return comment;
 }
 public void setComment(String comment) {
  this.comment = comment;
 }
 public List<TaskInstanceBean> getTibs() {
  return tibs;
 }
 public void setTibs(List<TaskInstanceBean> tibs) {
  this.tibs = tibs;
 }
 public User getUser() {
  return user;
 }
 public void setUser(User user) {
  this.user = user;
 }
 public String getStrDN() {
  return strDN;
 }

 public void setStrDN(String strDN) {
  this.strDN = strDN;
 }

 @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());
 }
}

 

 

分享到:
评论
发表评论

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

相关推荐

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

    标题中的“线程 福建移动批量复核太慢,后来就改用线程,但是没有效果”表明了一个在处理福建移动批量复核任务时遇到的性能问题。原本希望通过引入多线程来提高处理速度,但实际结果并未达到预期。这涉及到计算机...

    mybaits 多线程 实现数据批量插入 (运用CountDownLatch实现闭锁)

    本文将详细介绍如何利用MyBatis结合多线程和CountDownLatch闭锁来实现数据的批量插入。 首先,我们来看`mybatis批处理`。MyBatis的批处理功能允许我们在一次数据库连接中执行多条SQL语句,从而减少了数据库连接的...

    delphi多线程批量下载

    在Delphi这样的集成开发环境中,利用多线程进行批量下载是常见的应用场景,尤其对于处理大量数据或者大文件下载时,可以避免单一线程导致的阻塞和长时间等待。 标题“Delphi多线程批量下载”指的是使用Delphi编程...

    VC\专用编程\线程\vc编程,多线程实例线程创建·事件触发·结束进程.rar

    本压缩包文件包含的资源专注于讲解如何在Visual C++(简称VC)中实现多线程,以及相关的线程管理技巧,如线程的创建、事件触发和进程结束。 1. **线程创建**: 在VC++中,我们可以使用`&lt;thread&gt;`库或Windows API来...

    C#多线程批量下载

    标题中的"C#多线程批量下载"涉及到的是在C#编程环境下,利用多线程技术进行文件批量下载的实现。这种技术通常用于提高文件下载效率,尤其是在处理大量文件或者大文件时,通过并发的方式可以显著减少整体的下载时间。...

    多线程的批量线程同步解决方案

    "多线程的批量线程同步解决方案"这个标题暗示我们探讨的是如何在多线程环境下有效地管理和同步多个任务,确保数据一致性与程序正确性。下面将详细阐述相关知识点。 一、多线程基础 多线程是指在一个进程中同时执行...

    phpMyAdmin多线程批量破解工具

    phpMyAdmin多线程批量破解工具是一款用于数据库密码强制破解的工具,了解它的朋友想必不用做过多的介绍就应该了解他他是做什么的。 之前朋友问我有木有phpMyAdmin批量破解工具, 我在网上搜索了一下并没有发现相关的...

    FTP多线程批量上传 建目录

    在这个场景中,我们关注的是如何利用多线程技术实现FTP的批量上传以及创建目录的功能。 在传统的一对一文件传输中,FTP操作可能会花费相当长的时间,特别是在处理大量文件时。为了提高效率,开发人员通常会采用多...

    易语言批量启动多线程源码

    易语言批量启动多线程源码是一个用于编程的实践示例,主要针对的是易语言这一中国本土化的编程语言。易语言是由王江民先生创建的一种简单易学、面向普通用户的编程语言,其设计理念是使编程变得简单,让更多人能够...

    Java多线程Executors批量执行数据实现限流

    Java多线程实现数据切割批量执行,实现限流操作。 java线程池Executors实现数据批量操作。 批量异步Executors处理数据,实现限流操作,QPS限流。 线程池调用第三方接口限流实现逻辑。 案例适合: 1.批量处理大数据。...

    Java多线程调用BlockingDeque跑批量数据的例子

    一个线程从A表读数据放入队列 N个线程从队列中取出数据,找到其在子表中的数据 对子表中的数据开3种线程:读,发email,标记状态 N个线程对完成的A表数据做最后处理 支持大数据量跑批,就是个例子,本来是公司发送...

    python多线程批量访问url脚本

    本项目中的"python多线程批量访问url脚本"正是基于这个理念设计的。 该脚本采用了第三方库`grequests`,它是`requests`库的一个并行版本,能够支持异步的HTTP请求。`requests`库是Python中广泛使用的HTTP客户端,而...

    java多线程实现大批量数据导入源码

    在Java编程中,多线程技术是处理大数据批量导入或导出的重要手段。它能有效提升程序执行效率,尤其在数据库操作这样的I/O密集型任务中。本项目以"java多线程实现大批量数据导入源码"为题,旨在通过多线程策略将大量...

    python写的简易多线程批量ping工具

    提供了批量ping IP检测连通性的功能,可支持单IP,多IP,从文件中导入IP列表功能。当IP数量较多时,启用多线程ping,提高ping测效率

    Delphi多线程批量文件下载及解压程序源代码

    本项目是基于Delphi开发的一个多线程批量文件下载及解压程序,通过利用Delphi的强大功能和三方库,实现了高效、稳定的文件下载与解压操作。下面将详细阐述这个程序的核心知识点。 首先,Delphi是一个流行的面向对象...

    多线程FTP批量上传工具

    【标题】:“多线程FTP批量上传工具” 在IT领域,FTP(File Transfer Protocol)是一种标准网络协议,用于在客户端和服务器之间传输文件。而“多线程FTP批量上传工具”则是专门针对这一需求设计的应用软件,它允许...

    shell的多线程&当前文件夹下批量插入MySQL

    总结起来,虽然Shell本身不支持多线程,但我们可以通过FIFO文件和进程间的通信来模拟多线程行为,实现批量处理任务,例如在当前目录下批量插入MySQL数据库。这种方法在处理大量并发任务时非常有用,提高了工作效率。

    Java多线程机制(讲述java里面与多线程有关的函数)

    Java多线程机制是Java编程中至关重要的一部分,它允许程序同时执行多个任务,提升应用程序的效率和响应性。以下是对各个知识点的详细说明: 9.1 Java中的线程: Java程序中的线程是在操作系统级别的线程基础上进行...

Global site tag (gtag.js) - Google Analytics