您的位置:首页 > 其它

通过线程池使用多线程并发:ThreadPoolTaskExecutor 的应用例子

2016-01-28 17:06 761 查看
package com.koubei.Observable;

import java.text.SimpleDateFormat;

import java.util.Date;

import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

public class Test {

private static ThreadPoolTaskExecutor taskExecutor;

static {
taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.initialize();
taskExecutor.setCorePoolSize(50);// 核心线程数
taskExecutor.setMaxPoolSize(100);// 最大线程数
taskExecutor.setQueueCapacity(500);// 队列最大长度
taskExecutor.setKeepAliveSeconds(600);// 线程池维护线程所允许的空闲时间
}

public void testThread() {
System.out.println("========start=======");
for (int i = 1; i <= 10; i++) {
taskExecutor.execute(new TaskTimer(i));
}
while (taskExecutor.getActiveCount() != 0) {
// try {
// Thread.sleep(50);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
}
System.out.println("========end=======");

}

public static void main(String[] args) {
new Test().testThread();
taskExecutor.shutdown();
}

public class TaskTimer implements Runnable {

private int count = 150;

private int index;

public TaskTimer(int index) {
this.index = index;
}

public void run() {
for (int i = 1; i <= count; i++) {
// try {
// Thread.sleep(30);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.sss").format(new Date()) + "   user "
+ index + ":" + Thread.currentThread().getId() + " - " + i);
}
}
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: