您的位置:首页 > 编程语言 > Java开发

多线程学习记录2-java5的一些线程池

2013-01-20 15:03 525 查看
public class Test4 {

public static void main(String[] args) {
/**固定线程池:线程池中的线程是固定数量*/
//		ExecutorService threadPool = Executors.newFixedThreadPool(3);
/**缓存线程池,线程池中的线程数量不定,随任务数量的变化来动态修改池中的线程数*/
//		ExecutorService threadPool = Executors.newCachedThreadPool();
/**单线程池:线程池中只有一个线程,并且保证会有一个,如果池中的线程死亡了就又会生成一个。提交的任务都会被执行?*/
ExecutorService threadPool = Executors.newSingleThreadExecutor();

for (int i=0; i<10; i++){
final int task = i;
threadPool.execute(new Runnable() {
@Override
public void run() {
for (int i=0; i<10; i++){
try {
Thread.sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + ":" + i + ":task" + task);
}
}
});
}

System.out.println("the end...");
//关闭线程池
threadPool.shutdown();		//等待线程执行完后结束
//		threadPool.shutdownNow();	//不管线程是否执行完任务都结束

/**定时器线程池:1-在固定的时间之后执行一个任务。2-在固定的时间之后执行一个任务,然后每隔一段时间又执行一次任务*/
Executors.newScheduledThreadPool(3).schedule(
new Runnable() {
@Override
public void run() {
System.out.println("定时器到时。");
}
},
6,
TimeUnit.SECONDS);
}

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