package newtask;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class NewThreadPool {
private int threadCount = 5;//线程池大小
private int successThread = 0;
private int pageSize = 20;//页数
private int pageCount = 100;//每页的数量
private int currentPage = 0 ;//当前page
ExecutorService threadpool = Executors.newFixedThreadPool(threadCount);
public void exec(){
for(int i=0; i < threadCount; i++){
threadpool.submit(new Runnable() {
@Override
public void run() {
String threadName = Thread.currentThread().getName();
System.out.println("ThreadName:" + threadName + "开始");
int cPage = 0;
//getNextPage()必须保存到变量中,否则计算startCount时currentPage可能已经被修改
while((cPage = getNextPage()) <= pageSize){
System.out.println(threadName + ": currentPage:" + cPage);
int startCount = pageCount*(cPage-1) + 1;
int endCount = pageCount*(cPage);
System.out.println(threadName + ": 下载数据(" + startCount + "," + endCount+")");
System.out.println();
try {
Thread.currentThread().sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
threadFinish(threadName);
}
});
}
}
public synchronized int getNextPage(){
if(currentPage > pageSize){
return currentPage;
}
currentPage ++;
return currentPage;
}
public synchronized void threadFinish(String name){
System.out.println("ThreadName:" + name + "结束");
successThread ++;
if(successThread == threadCount){
System.out.println("所有线程全部执行完毕");
currentPage = 0 ;
}
}
public static void main(String[] args) {
NewThreadPool pool = new NewThreadPool();
pool.exec();
}
}