package cn.cblue.heima2;
import java.util.Date;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
/**
* @Description: 线程池
* @author huangzjb cblue2013@126.com
* @Company Digital China
* @date 2014-5-31 上午12:22:24
* @version 1.0
*/
public class ThreadPoolTest {
public static void main(String[] args) {
//线程个数不定,根据线程池中的任务数,动态变化
ExecutorService service = Executors.newCachedThreadPool();
// 只产生一个线程,如果线程死亡,会产生一个新的,始终保持有一个线程
ExecutorService executorService = Executors.newSingleThreadExecutor();
//产生固定的三个线程
ExecutorService threadPool = Executors.newFixedThreadPool(3);
for (int i = 1; i <= 10; i++) {
final int task = i;
threadPool.execute(new Runnable() {
public void run() {
for (int j = 1; j <= 10; j++) {
System.out.println(Thread.currentThread().getName()
+ " is loop of " + j + " for task of " + task);
}
}
});
}
threadPool.shutdown();
//隔6秒后,执行定时任务
Executors.newScheduledThreadPool(3).schedule(new Runnable() {
public void run() {
System.out.println("bombing");
}
}, 6, TimeUnit.SECONDS);
//隔6秒后,执行定时任务,之后每2秒执行一次
Executors.newScheduledThreadPool(3).scheduleAtFixedRate(new Runnable() {
public void run() {
System.out.println("bombing");
}
}, 6, 2, TimeUnit.SECONDS);
try {
while (true) {
Thread.sleep(1000);
System.out.println(new Date().getSeconds());
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
java 5线程池技术
最新推荐文章于 2024-07-19 16:55:35 发布