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

    线程池

    简述:每个线程在执行完任务后都要被销毁,但是当有很多的线程时,这些线程又是执行很少的任务,就会出现频繁的创建销毁线程,消耗时间,这可以通过线程池得到解决,线程池里的线程执行完后不必销毁,继续执行其他任务,线程池就是一个容器可以使用集合实现。

    1、使用集合中的LinkedLIst作为容器,LinkedList,当程序第一次启动的时候,可以创建多个线程,保存在集合中,当需要用到线程的时候,就从集合中取出来使用,用完了归还。

    Thread t = linkedlist.removeLast();// 使用前取出来
    linkedlist.addLast();// 用完后归还
    

    使用List或者LinkedList就是线程池的底层实现原理,实际上就是一个存储线程的集合。在JDK1.5之后,内置了线程池,可以直接线程池,可以直接使用

    内置的线程池的使用

    java.util.concurrent.Executors:生产线程池的工厂类
    Executors类中的静态方法:
        static ExecutorService newFixedThreadPool(int nThreads):创建一个可以重用的固定线程数的线程池
        参数:int nThreads(线程池中线程数量)
        返回值:ExecutorService接口,返回的是该接口的实现类对象,可以使用ExecutorService接口接收
    
    java.util.concurrent.ExecutorService:线程池接口:
    用来从线程池中获取线程,调用start方法,执行线程任务
    submit(Runable task):提交一个Runable任务用于执行
    shutdown():销毁线程池(不建议使用)
    
    
    线程池的使用步骤:
    1、使用线程池工厂类Executors提供的静态方法newFixedThreadPool创建一个线程池
    2、创建一个Runable接口的实现类,重写run方法,设置线程任务
    3、创建的线程池调用submit方法,传递线程任务,submit方法的参数是Runable实现类的对象
    4、如果不再使用线程池,就可以调用shutdown方法销毁(不建议执行)
    

    Runable实现类

    package cn.zhuobo.day12.threadPool;
    // 2、创建一个Runable接口的实现类,重写run方法,设置线程任务
    public class RunableImpl implements Runnable {
        @Override
        public void run() {
            System.out.println(Thread.currentThread().getName() + "正在执行");// currentThread方法是Thread类的静态方法
        }
    }
    

    线程池的使用

    public class Demo01ThreadPool {
        public static void main(String[] args) {
    //        1、使用线程池工厂类Executors提供的静态方法newFixedThreadPool创建一个线程池
            ExecutorService pool = Executors.newFixedThreadPool(3);
           //  3、创建的线程池调用submit方法,传递线程任务,submit方法的参数是Runable实现类的对象
            pool.submit(new RunableImpl());// 
            pool.submit(new RunableImpl());
            pool.submit(new RunableImpl());
            pool.submit(new RunableImpl());
        }
    }
    

    执行结果:线程池1使用3个线程去执行这些任务

    pool-1-thread-1正在执行
    pool-1-thread-3正在执行
    pool-1-thread-2正在执行
    pool-1-thread-1正在执行
    
    
  • 相关阅读:
    CSS3—— 2D转换 3D转换 过渡 动画
    CSS3——边框 圆角 背景 渐变 文本效果
    CSS3——表单 计数器 网页布局 应用实例
    CSS3——提示工具 图片廓 图像透明 图像拼接技术 媒体类型 属性选择器
    CSS3——对齐 组合选择符 伪类 伪元素 导航栏 下拉菜单
    CSS3——分组和嵌套 尺寸 display显示 position定位 overflow float浮动
    CSS3——盒子模型 border(边框) 轮廓(outline)属性 margin外边距 padding填充
    Eclipse连接数据库报错Local variable passwd defined in an enclosing scope must be final or effectively final
    数据库——单表查询
    数据库——添加,修改,删除
  • 原文地址:https://www.cnblogs.com/zhuobo/p/10648550.html
Copyright © 2011-2022 走看看