zoukankan      html  css  js  c++  java
  • java一个简单的线程池小例子

    public class ExecutorTest {
    /**
    * 默认开启的线程数,
    * 最大线程数,
    * 所有线程都执行完毕后多长时间关闭线程池,
    * 时间类型(秒、毫秒),
    * 消息队列最大数量
    */
    static ThreadPoolExecutor fixedThreadPool = new ThreadPoolExecutor(4,4,5000L,
    TimeUnit.MILLISECONDS,new ArrayBlockingQueue(1024));

    public static void main(String[] args) {
    

    // ThreadPoolExecutor
    fixTheadPoolTest();

        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        fixTheadPoolTest();
    }
    /**
     * 1.创建固定大小的线程池。每次提交一个任务就创建一个线程,直到线程达到线程池的最大大小<br>
     * 2.线程池的大小一旦达到最大值就会保持不变,如果某个线程因为执行异常而结束,那么线程池会补充一个新线程<br>
     * 3.因为线程池大小为4,每个任务输出index后sleep 2秒,所以每两秒打印4个数字,和线程名称<br>
     */
    public static void fixTheadPoolTest() {
        fixedThreadPool.allowCoreThreadTimeOut(true);
        for (int i = 0; i < 10; i++) {
            final int ii = i;
            fixedThreadPool.execute(() -> {
                System.out.println("线程名称:" + Thread.currentThread().getName() + ",执行" + ii);
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            });
        }
        System.out.println("===========================");
    }
    

    }

  • 相关阅读:
    连续奇数
    50:数根
    38:花生采摘
    素数对
    17:字符串判等
    2702:密码翻译
    27:单词翻转
    15:整理药名
    12:加密的病历单
    09:密码翻译
  • 原文地址:https://www.cnblogs.com/jiazhihao/p/13952016.html
Copyright © 2011-2022 走看看