zoukankan      html  css  js  c++  java
  • Java线程池使用入门

    Java线程池使用入门

    /*
        线程池:JDK1.5之后提供的
        java.util.concurrent.Executors:线程池的工厂类,用来生成线程池
        Executors类中的静态方法:
            static ExecutorService newFixedThreadPool(int nThreads) 创建一个可重用固定线程数的线程池
            参数:
                int nThreads:创建线程池中包含的线程数量
            返回值:
                ExecutorService接口,返回的是ExecutorService接口的实现类对象,我们可以使用ExecutorService接口接收(面向接口编程)
        java.util.concurrent.ExecutorService:线程池接口
            用来从线程池中获取线程,调用start方法,执行线程任务
                submit(Runnable task) 提交一个 Runnable 任务用于执行
            关闭/销毁线程池的方法
                void shutdown()
        线程池的使用步骤:
            1.使用线程池的工厂类Executors里边提供的静态方法newFixedThreadPool生产一个指定线程数量的线程池
            2.创建一个类,实现Runnable接口,重写run方法,设置线程任务
            3.调用ExecutorService中的方法submit,传递线程任务(实现类),开启线程,执行run方法
            4.调用ExecutorService中的方法shutdown销毁线程池(不建议执行)
     */
    

    实现Runnable接口,重写run方法,设置线程任务:

    package cb.blogsx.threadpool;
    /*
        2.创建一个类,实现Runnable接口,重写run方法,设置线程任务
     */
    public class RunnableImpl implements Runnable{
        @Override
        public void run() {
            System.out.println(Thread.currentThread().getName()+"创建了一个新的线程执行");
        }
    }
    

    .使用线程池的工厂类Executors里边提供的静态方法newFixedThreadPool生产一个指定线程数量的线程池

    public class Demo01ThreadPool {
        public static void main(String[] args) {
            //1.使用线程池的工厂类Executors里边提供的静态方法newFixedThreadPool生产一个指定线程数量的线程池
            ExecutorService es = Executors.newFixedThreadPool(2);
            //3.调用ExecutorService中的方法submit,传递线程任务(实现类),开启线程,执行run方法
            es.submit(new RunnableImpl());//pool-1-thread-1创建了一个新的线程执行
            //线程池会一直开启,使用完了线程,会自动把线程归还给线程池,线程可以继续使用
            es.submit(new RunnableImpl());//pool-1-thread-1创建了一个新的线程执行
            es.submit(new RunnableImpl());//pool-1-thread-2创建了一个新的线程执行
    
            //4.调用ExecutorService中的方法shutdown销毁线程池(不建议执行)
            es.shutdown();
    
            es.submit(new RunnableImpl());//抛异常,线程池都没有了,就不能获取线程了
        }
    
    }
    
  • 相关阅读:
    MFC关闭子窗口 如何把父窗口也一起关闭
    VS2010创建动态链接库并且使用动态链接库DLL
    Linux文件处理命令
    Centos ftp服务器安装配置
    PHP数字价格格式化,保留两位小数
    PHP中file_put_contents追加和换行
    如何查看Laravel版本号的三种方法
    性能优化系列一:性能优化介绍与优化的范围
    只需两步获取任何微信小程序源码
    前端网页、php与mysql数据库字符编码(解决中文等乱码问题
  • 原文地址:https://www.cnblogs.com/sxblog/p/12862563.html
Copyright © 2011-2022 走看看