zoukankan      html  css  js  c++  java
  • 13. 线程池

    package com.gf.demo12;
    
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    /**
     * 一、线程池 : 提供了一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁额外开销,提高了响应的速度。
     * 
     * 二、线程池的体系机构 : 
     *	java.util.concurrent.Executor : 负责线程的使用与调度的根接口
     *		|--ExecutorService 子接口 : 线程池的主要接口
     *			|--ThreadPoolExecutor 线程池的实现类
     *			|--ScheduledExecutorService 子接口 : 负责线程的调度
     *				|--ScheduledThreadPoolExecutor : 继承ThreadPoolExecutor ,实现ScheduledExecotorService
     *
     * 三、工具类: Executors
     * ExecutorSercice newFixedThreadPool() : 创建固定大小的线程池
     * ExecutorSercice newCachedThreadPool() : 缓存线程池,线程池的数量不固定,可以根据需求自动的更改数量。
     * ExecutorSercice newSingleThreadExecutor() : 创建单个线程池,线程池中只有一个线程
     * 
     * 
     * ScheduledExecutorService newScheduledThreadPool() : 创建固定大小的线程,可以延迟或定时执行任务。
     *
     */
    public class TestThreadPool {
    	
    	public static void main(String[] args) {
    		//1. 创建线程池
    		ExecutorService pool = Executors.newFixedThreadPool(5);
    		
    		ThreadPoolDemo tpd = new ThreadPoolDemo();
    		
    		//2. 为线程池中的线程分配任务
    		for(int i = 0 ; i < 10 ; i++){
    			pool.submit(tpd);
    		}
    		
    		//3. 关闭线程池,平和的方式关闭
    		pool.shutdown();
    	}
    
    }
    
    class ThreadPoolDemo implements Runnable{
    	
    	private int i = 0;
    
    	@Override
    	public void run() {
    		while(100 >= i){
    			System.out.println(Thread.currentThread().getName() + " : " + i++);
    		}
    	}
    	
    }
    

    关注我的公众号,精彩内容不能错过

  • 相关阅读:
    PHP验证码
    c#属性
    框架数据连接类
    mysqli
    C# 委托
    Windows系统,文件和文件夹命名规则:
    固态硬盘与普通硬盘的区别
    windows快捷键
    1.认识计算机
    计算机题解
  • 原文地址:https://www.cnblogs.com/huanchupkblog/p/8037968.html
Copyright © 2011-2022 走看看