/**
*
* 批量复核线程
*
* @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();
分享到:
相关推荐
mybaits 多线程 实现数据批量插入 (运用CountDownLatch实现闭锁) 1、mybatis批处理 2、数据分批量查询 3、数据分批量插入
phpMyAdmin多线程批量破解工具是一款用于数据库密码强制破解的工具,了解它的朋友想必不用做过多的介绍就应该了解他他是做什么的。 之前朋友问我有木有phpMyAdmin批量破解工具, 我在网上搜索了一下并没有发现相关的...
Android----线程实现图片移动 , 运用线程实现图片的水平循环往返移动!
一个线程从A表读数据放入队列 N个线程从队列中取出数据,找到其在子表中的数据 对子表中的数据开3种线程:读,发email,标记状态 N个线程对完成的A表数据做最后处理 支持大数据量跑批,就是个例子,本来是公司发送...
delphi7多线程批量下载代码,线程稳定,可突破服务器限速 , 可拿来学习. 代码直接编译可用.
Java多线程实现数据切割批量执行,实现限流操作。 java线程池Executors实现数据批量操作。 批量异步Executors处理数据,实现限流操作,QPS限流。 线程池调用第三方接口限流实现逻辑。 案例适合: 1.批量处理大数据。...
提供了批量ping IP检测连通性的功能,可支持单IP,多IP,从文件中导入IP列表功能。当IP数量较多时,启用多线程ping,提高ping测效率
FTP 多线程 批量 上传、建目录。 免费放出!快来下载吧!
shell的多线程,以及使用多线程编写shell脚本实现当前文件夹下批量插入MySQL。
python多线程批量访问url脚本;使用grequests多线程访问,结果写入excel和txt都有,详细注释
易语言批量启动多线程源码。@易语言源码分享站。
一个使用php多线程批量采集下载图片的实现代码函数类,curl的多线程,另外curl可以设置请求时间,遇到很慢的url资源,可以果断的放弃,这样没有阻塞,另外有多线程请求,效率应该比较高
Java的线程回顾 匿名内部类 Android的多线程技术之Handler Android的多线程技术之AsyncTask HTTP概述 HTTPClient
《MFC多线程的创建,包括工作线程和用户界面线程》全面讲解MFC多线程的创建,界面多线程与工作者多线程,多线程的起源、继承与派生,两多线程之间的区别与相同点,定时器与多线程的关系与异同(定时器是定时优先抢占...
java多线程实现大批量数据切分成指定份数的数据,然后多线程处理入库或者导出,线程的个数和每份数据的数量都可以控制
封送处理是跨线程边界移动调用的行为,需耗费大量的资源。为使需要发生的封送处理量减到最少,并确保以线程安全方式处理调用, 应使用Control.BeginInvoke或Control.Invoke方法来调用主执行线程上的方法,从而使...
java 的小例子。多线程控制按钮移动。