多线程学习----线程池(九)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/havebeenstand/article/details/83538459

1.固定线程池

创建一个线程池,里边放三个线程,创建十个任务,让三个线程谁有空闲谁去执行这十个任务,直到任务结束。

public class ThreadPoolStudy {

	public static void main(String[] args) {
		
		//创建一个装有三个线程的线程池
		ExecutorService threadPool = Executors.newFixedThreadPool(3);
		
		for(int i = 1;i < 11;i++){
			final int task  = i;
			threadPool.execute(new Runnable() {
				@Override
				public void run() {
					for(int j = 1;j < 6;j++){
						try {
							Thread.sleep(10);
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						System.out.println("当前的线程是:"+Thread.currentThread().getName()+"正在进行第"+j+"次循环,正在执行任务:"+task);
					}
				}
			});
		}
		
		
	}
}

线程池里的三个进程每次从排队队列中取三个任务执行,直到执行完毕,再去等候队列中取三个任务,执行。。。。。

运行结果:

2.threadPool.shutdown()和threadPool.shutdownNow()的区别

shutdown只是将线程池的状态设置为SHUTWDOWN状态,正在执行的任务会继续执行下去,没有被执行的则中断。而shutdownNow则是将线程池的状态设置为STOP,正在执行的任务则被停止,没被执行任务的则返回。

举个工人吃包子的例子,一个厂的工人(Workers)正在吃包子(可以理解为任务),假如接到shutdown的命令,那么这个厂的工人们则会把手头上的包子给吃完,没有拿到手里的笼子里面的包子则不能吃!而如果接到shutdownNow的命令以后呢,这些工人们立刻停止吃包子,会把手头上没吃完的包子放下,更别提笼子里的包子了。
参考地址:https://blog.csdn.net/horero/article/details/77622951

3.缓存线程池的使用

//创建缓存线程池
ExecutorService threadPool = Executors.newCachedThreadPool();

运行结果:

如果来十个任务,开启十个线程去执行,做完任务,过一段时间释放掉;

4.创建单一线程池(如何实现线程死掉重新启动)

ExecutorService threadPool = Executors.newSingleThreadExecutor();

里面只创建一个线程,如果线程死掉了,再创建一个新的线程替补它的工作

5.线程池定时器

创建一个爆破任务,5s后爆炸。

代码实例:

ScheduledExecutorService bombTaskThreadPool =  Executors.newScheduledThreadPool(3);
		bombTaskThreadPool.schedule(new Runnable() {
			@Override
			public void run() {
				System.out.println("炸弹爆炸。。。。。");
			}
		}, 5, TimeUnit.SECONDS);

第一次在5s钟以后炸,以后每2s炸一次

ScheduledExecutorService bombTaskThreadPool =  Executors.newScheduledThreadPool(3);
		bombTaskThreadPool.scheduleAtFixedRate(new Runnable() {
			@Override
			public void run() {
				System.out.println("炸弹爆炸。。。。。");
			}
		}, 5,2, TimeUnit.SECONDS);

猜你喜欢

转载自blog.csdn.net/havebeenstand/article/details/83538459
今日推荐