zoukankan      html  css  js  c++  java
  • 线程池的创建

    package com.newer.cn;
    
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    public class Test1 {
    
        public static void main(String[] args) {
            // 创建线程池的方式
            
            // 创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程,在需要时使用提供的 ThreadFactory 创建新线程。
            ExecutorService pool = Executors.newFixedThreadPool(5);
            
            // 创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。
            ExecutorService pool1 = Executors.newSingleThreadExecutor();
            
            // 创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。
            ExecutorService pool2 = Executors.newCachedThreadPool();
            
            //创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。
            ExecutorService pool3 = Executors.newScheduledThreadPool(3);
    
        }
    
    }

    举个例子

    package com.newer.cn;
    
    public class Demo implements Runnable {
    
        @Override
        public void run() {
            String name = Thread.currentThread().getName();
            System.out.println("执行当前线程的是:"+name);
            for(int i = 1;i <= 10;i++){
                System.out.println(name+":"+i);
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            System.out.println("执行任务完毕");
    
        }
    
    }
    package com.newer.cn;
    
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    public class Test {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
             ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); 
             for(int i = 1;i <= 5;i++){
                 Demo demo = new Demo();
                 cachedThreadPool.execute(demo);
             }
            
    
        }
    
    }
  • 相关阅读:
    代理模式的理解和示例
    模板方法模式的理解和使用
    ubuntu16.04安装matlab_R2018a/R2017a
    c++ 智能指针用法详解
    ORBSLAM2单目初始化过程
    ROS launch 总结
    组合导航初理解
    对极几何-本质矩阵-基本矩阵
    学习OpenCV双目测距原理及常见问题解答
    Ubuntu 16.04 一系列软件安装命令,包括QQ、搜狗、Chrome、vlc、网易云音乐安装方法(转载)
  • 原文地址:https://www.cnblogs.com/lujing-newer/p/6607828.html
Copyright © 2011-2022 走看看