Java线程池

JAVA提供四种线程池:

1、newCachedThreadPool创建一个可缓存线程池,线程池长度超出,则灵活回收空闲线程,若无空闲则新建线程。每次execute时,task还没有执行完(sleep500),因此会开启新的线程;如果修改sleep(0),则当需要执行第二个任务时execute第一个任务已经执行完,则会复用执行第一个任务的线程,而不创建新的线程,线程池大小不限制。

public class newCachedThreadPoolTest {
	public static void main(String[] args) {
		task task = new task(10);
		ExecutorService executorService = Executors.newCachedThreadPool();
		for (int i = 0; i < 10; i++) {
			Thread.sleep(200);
			cachedThreadPool.execute(task);
		}
	}
}

class task implements Runnable {
	@Override
	public void run() {
		try {
			Thread.sleep(500);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}


2、newFixedThreadPool创建固定大小的线程池,超出的线程会在队列中等待,控制最大并发数量。开启5个线程,无论睡多久,是否执行完有空闲。

public class newCachedThreadPoolTest {
 
    public static void main(String[] args) {
 	task task = new task(10);
	ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5); 	                                       	for (int i = 0; i < 10; i++) {
		Thread.sleep(200);
		cachedThreadPool.execute(task);
	}
    }
}

3、newScheduledThreadPool创建一个定长的线程池,支持定时、周期执行任务

4、newSingleThreadExecutor创建一个单一工作线程,保证所有任务按照指定执行顺序执行




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值