zoukankan      html  css  js  c++  java
  • ThreadPoolExecutor 实现固定大小线程池

    1. 线程是可以有生命周期的,一般命令执行完就会自动退出

    package com;
    
    import java.util.concurrent.Executors;
    import java.util.concurrent.ThreadPoolExecutor;
    
    public class MyThreadPool {
    
        public static void main(String [] args){
            int num = 20;
            ThreadPoolExecutor pool = (ThreadPoolExecutor) Executors.newFixedThreadPool(num);;
            for (int i = 0 ; i<num ; i++){
                int s = i;
                Runnable run = new Runnable() {
                    public void run() {
                        try {
                            Thread.sleep(4000);
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                };
                pool.execute(run);
            }

          pool.execute(() -> System.out.println(System.currentTimeMillis()));

          System.out.println(2);
          System.out.println(3);
          System.out.println(4);
          System.out.println(5);
          System.out.println(6);
     } }

     

    我这里是新建20个线程放入线程池 , 每个线程的功能都是等待 4秒 ,所以在4秒后 , 线程池的大小为 0

    便可以执行新加入的线程

    但是 , 我在后面加了新的执行 , 他会编译的时候跳过需要等待的线程 , 并不断尝试 , 直到可以执行 .

    所以 , 一定要注意 , 后面 的动作要执行, 先判断前面的动作是否执行完毕

    他不会阻塞后面你想要执行的

  • 相关阅读:
    web.config中的customErrors标记的用法
    算法系列15天速成[索引]
    log4net的简单使用
    Cookie帮助类
    ASPxTreeList及ASPxGridView使用
    javascript获取页面中的位置
    如何部署windows服务?
    基于T4模板引擎生成静态网站(CMS)
    SqlServer实现递归查询
    安卓(AndRoid)开发环境搭建之HelloWord
  • 原文地址:https://www.cnblogs.com/alpha-cat/p/13128824.html
Copyright © 2011-2022 走看看