java四种线程池

1 newSingleThreadExecutor 创建一个单线程化的线程池,他只会用唯一的工作线程来执行任务,保证所有线程按照指定顺序(FIFO,LIFO,优先级)执行
’ ExecutorService singleT=Executors.newSingleThreadExecutor();

	for(int i=0;i<5;i++) {
		final int index=i;
		singleT.execute(new Runnable() {
			
			@Override
			public void run() {
				// TODO Auto-generated method stub
				System.out.println(index);
				try {
					Thread.sleep(2000);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		});

线程每隔两秒依次输出0到4;

2newCachedThreadPool 创建一个可缓存线程池,如果线程池长度超过处理需要,可以灵活回收空闲线程,如无可回收 则新建线程。
ExecutorService cThread=Executors.newCachedThreadPool();

	for(int i=0;i<10;i++) {
		final int index=i;
		cThread.execute(new Runnable() {
			
			@Override
			public void run() {
				// TODO Auto-generated method stub
				System.out.println(index);
				try {
					Thread.sleep(1000);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		});
	}

输出 1 3 2 0 4 5 6 7 8 9
线程池为无限大,当执行第二个任务时第一个任务已经完成,会复用执行第一个任务的线程,而不用每次新建线程。

3newFixedThreadPool 创建一个定长线程池,控制最大线程并发数 超出的线程会在队列中等待
ExecutorService fThread=Executors.newFixedThreadPool(3);

	for(int i=0;i<10;i++) {
		final int index=i;
		fThread.execute(new Runnable() {
			
			@Override
			public void run() {
				// TODO Auto-generated method stub
				System.out.print(index);
				try {
					Thread.sleep(1000);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		});
	}

输出 0213456879
因为线程池大小为3,每个任务输出index后sleep1秒,所以每两秒打印3个数字。
定长线程池的大小最好根据系统资源进行设置。如Runtime.getRuntime().availableProcessors()。

4 newScheduledThreadPool
创建一个定长线程池,支持定时 周期性执行任务
ScheduledExecutorService sThread=Executors.newScheduledThreadPool(3);
//延迟3秒执行任务
sThread.schedule(new Runnable() {

		@Override
		public void run() {
			// TODO Auto-generated method stub
			
		}
	}, 3, TimeUnit.SECONDS);
	//延迟3秒开始执行 每1秒执行一个
	sThread.scheduleAtFixedRate(new Runnable() {
		
		@Override
		public void run() {
			// TODO Auto-generated method stub
			
		}
	}, 3, 1, TimeUnit.SECONDS);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值