zoukankan      html  css  js  c++  java
  • 【Java学习笔记】ThreadPoolExecutor 基本概念入门

    一、资源

     1、 一篇线程池的入门级别的demo

      http://www.cublog.cn/u2/70285/showart_1936084.html

    2、挺详细的,用的是一样的demo

    http://blog.csdn.net/waterbig/article/details/4794244

    二、分析

       看了一些线程和线程池的资料,自己动手看看

       前期:

      整个代码就改了两个地方

        1、为了观察方便

      // 便于观察,等待一段时间
    System.out.println("thread %s sleep "+Thread.currentThread().getName());
    Thread.sleep(produceTaskSleepTime);

       2、这条比较有用,对Queue的操作和策略了解很有用

     // 处理一个任务,这里的处理方式太简单了,仅仅是一个打印语句

    System.out.println(
    "start .." + threadPoolTaskData+"@"+Thread.currentThread().getName());

     运行:

         基本的一些概念,核心,最大,策略,并行

         当前策略: ThreadPoolExecutor threadPool = new ThreadPoolExecutor(2, 4, 3,

                       TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(3),

                        new ThreadPoolExecutor.AbortPolicy());

           参数:core:2  max:4   workQueue: ArrayBlockingQueue 有界队列,大小为3   策略:抛异常

        运行结果:

              

      这里看出:1、2->新建线程,3、4、5入队列,6,7->新建线程,按照策略,8,9,10被拒绝,报错,之后,从队列取出任务,用空闲的线程执行3,4,5.

          

        根据策略的说明,若是 ThreadPoolExecutor.DiscardOldestPolicy,应该是3,4,5被抛弃,而执行8,9,10.运行证实。

        

       

  • 相关阅读:
    Linux文件和目录管理常用重要命令
    Windows和Linux下Mysql 重置root 密码
    瀑布流vue-waterfall的高度设置
    vue-cli 引入axios及跨域使用
    Vue 脱坑记
    shell基础
    正则
    安装卸载
    压缩打包
    vim工具
  • 原文地址:https://www.cnblogs.com/hundan/p/2166562.html
Copyright © 2011-2022 走看看