线程池中Executors应用(一)

Executors是JDK1.5中线程并发库的类(api参考java.util.concurrent),该类提供了
很多用于创建线程池的方法,返回的线程池都实现了ExecutorService接口,这些线程池通常可提高程序性能。

本章用到的方法:

1.创建指定线程大小

public static ExecutorService newFixedThreadPool(int nThreads)

2.创建缓存线程池,如果当前没有可用线程,则创建一个新线程并添加到线程池中

public static ExecutorService newCachedThreadPool()

3.创建单一线程,相当于newFixedThreadPool大小为1

public static ExecutorService newSingleThreadExecutor()

例子:

实现创建一个三个线程的线程池,并往线程池中提交五个任务,每个任务循环五遍(既每个任务执行五次)

package com.study.communication;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * 线程池
 * 
 * @author 我夕
 * 
 */
public class ThreadPoolTest {

	public static void main(String[] args) {
		// 创建指定线程大小
		ExecutorService service = Executors.newFixedThreadPool(3);

		// 缓存线程池,这个方法是有多少个任务就创建多少条线程
		// ExecutorService service=Executors.newCachedThreadPool();

		// 创建单一线程,相当于newFixedThreadPool大小为1
		// ExecutorService service=Executors.newSingleThreadExecutor();

		// 循环5次,就是往线程池里扔五个任务
		for (int i = 1; i <= 5; i++) {
			final int task = i;
			service.submit(new Runnable() {

				@Override
				public void run() {
					// 循环五次,就是每个人物执行五遍
					for (int j = 1; j <= 5; j++) {
						// 这里停顿0.2秒,为了调试能够看到更好结果
						try {
							Thread.sleep(200);
						} catch (InterruptedException e) {
							e.printStackTrace();
						}
						System.out.println("当前线程" + Thread.currentThread()
								+ "正在执行第 " + task + " 个任务的第 " + j + " 遍");
					}
				}
			});
		}
		System.out.println("所有的任务都提交完毕");
		// 线程用完,记得要关闭
		service.shutdown();
	}

}



执行结果:

从以上结果,可以看出,每次都只有三个任务被执行,因为我们只创建了三个线程,额外以上提到的创建缓存线程此与单一的线程代码中已写出,大家把注释换下就可以了,另外关于线程池一个比较实用的定时器功能,将在下一篇列出,祝大家学习愉快。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值