使用java多线程实现并发,多线程使用比较简单,但要注意一个问题——主线程若要等待子线程结束需要稍微处理一下。
Thread子线程类:
public class ApiGetThread extends Thread{
private int count;
private String url;
private ParamMap<String, String> params;
private CountDownLatch threadsSignal;
public ApiGetThread(int count,String url,ParamMap<String, String> params,CountDownLatch threadsSignal){
this.count = count;
this.url = url;
this.params = params;
this.threadsSignal = threadsSignal;
}
public void run(){
System.out.println(Thread.currentThread().getName() + "开始...");
//do something
threadsSignal.countDown();//线程结束时计数器减1
System.out.println(Thread.currentThread().getName() + "结束. 还有" + threadsSignal.getCount() + " 个线程");
}
}
main主线程:
//get请求 多线程并发
int threadNum = 5; //线程数
CountDownLatch threadSignal = new CountDownLatch(threadNum);//初始化countDown
for(int i=0;i<threadNum;i++){
new ApiGetThread(2,url,params,threadSignal).start();
}
threadSignal.await();//等待所有子线程执行完
System.out.println(Thread.currentThread().getName() + "结束.");//打印结束标记