自动创建线程池的两种方式(不推荐使用)

27 阅读1分钟

线程池,顾名思义就是存放线程的池子。java中Executors类提供了自动创建线程池的方法,有带参数和不带参数的,分别是newFixedThreadPool(int nThreads)和newCachedThreadPool()

newCachedThreadPool():创建一个指定最多线程数量的线程池

	// 1.创建线程池对象
	ExecutorService pool = Executors.newCachedThreadPool();
	
	// 2.创建任务代码
	Runnable runnable = () -> {
	    try {
	        Thread.sleep(100);
	    } catch (InterruptedException e) {
	        e.printStackTrace();
	    }
	    System.out.println(Thread.currentThread().getName() + ":正在执行任务");
	};
	
	// 3.提交任务给线程池
	for (int i = 0; i < 100; i++) {
	    pool.submit(runnable);
	}
	
	// 4.销毁线程池(一般不销毁)
	pool.shutdown();

在这里插入图片描述

newFixedThreadPool(int nThreads):创建一个默认的线程池,容量为int最大值

	// 1.创建线程池对象,设定线程数为10
	ExecutorService pool = Executors.newFixedThreadPool(10);
	
	// 2.创建任务代码
	Runnable runnable = () -> {
	    try {
	        Thread.sleep(100);
	    } catch (InterruptedException e) {
	        e.printStackTrace();
	    }
	    System.out.println(Thread.currentThread().getName() + ":正在执行任务");
	};
	
	// 3.提交任务给线程池
	for (int i = 0; i < 100; i++) {
	    pool.submit(runnable);
	}
	
	// 4.销毁线程池(一般不销毁)
	pool.shutdown();

在这里插入图片描述

总结:

自动创建线程池都是这一个方法,区别在于是否指定线程数量。另外,这两种自动创建线程池的方式都不推荐,因为这两种方式都比较粗略。 在这里插入图片描述

首次发布

hezhongying.blog.csdn.net/article/det…