runnable类实现 run方法
package main.java.com.crm.testScript.concurrence;
import java.util.concurrent.CountDownLatch;
import main.java.com.crm.testScript.leads.NormalAssign;
public class NormalAssignThread implements Runnable{
public CountDownLatch startGate;
public CountDownLatch endGate;
private String customerDq;
private String customerIndustryCode;
private String leadsSource;
private Integer customerLevel;
private Long leadsId;
public NormalAssignThread(String customerDq, String customerIndustryCode, String leadsSource, Integer customerLevel,
Long leadsId, CountDownLatch startGate, CountDownLatch endGate) {
this.customerDq = customerDq;
this.customerIndustryCode = customerIndustryCode;
this.leadsSource = leadsSource;
this.customerLevel = customerLevel;
this.leadsId = leadsId;
this.startGate = startGate;
this.endGate = endGate;
}
@Override
public void run() {
try {
startGate.await();
NormalAssign normalAssign = new NormalAssign();
String result = normalAssign.normalAssign(customerDq, customerIndustryCode, leadsSource, customerLevel, leadsId);
System.out.println("分配结果" + result);
} catch (Exception e) {
e.printStackTrace();
} finally {// 线程-1
endGate.countDown();
}
}
}
执行的main方法
package main.java.com.crm.testScript.concurrence;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class MoreConcurrence {
public static void main(String[] args) throws InterruptedException {
int threadNums = 5;
ExecutorService service = Executors.newFixedThreadPool(threadNums);
final CountDownLatch startGate = new CountDownLatch(1);
final CountDownLatch endGate = new CountDownLatch(threadNums);
//创建多个线索,并等待分配
for(int i = 0;i<threadNums;i++){
System.out.println("线索ID:"+i);
service.execute(new NormalAssignThread("010", "100", "3", 1, 1600L+i, startGate, endGate));
}
//所有线程都启动完,打开启动门
startGate.countDown();
System.out.println("所有请求已发出");
endGate.await();
System.out.println("所有请求已完成");
}
}