8.线程池用过吗?ThreadPoolExecutor谈谈你的理解

Scroll Down

线程池用过吗?ThreadPoolExecutor谈谈你的理解?

image-1662512151959

为什么用线程池,优势

image-1662512164220

线程池如何使用

  • 架构说明

    image-1662512179508

  • 编码实现

    • 了解

      image-1662512201889

    • 重点

      image-1662512231644

      • Executors.newFixedThreadPool(int nThreads);

        image-1662512251737

      • Executors.newSingleThreadExecutor();

        image-1662512270681

      • Executors.newCachedThreadPool();

        image-1662512284914

  • ThreadPoolExecutor

    image-1662512298135

线程池的几个重要参数介绍

  • 7大参数

    image-1662512313691

    image-1662512325451

    • corePoolSize

image-1662512342392

银行网点形象比喻

image-1662512365576

说说线程池的底层工作原理

image-1662512385560
image-1662512394420

彩蛋

  • 1.适配器模式

    • 透传
      传接口,扩展性,适配性得到保证(永远传参传接口,经验之谈)
    • 构造注入(spring,FutureTask等)
  • 2.技术架构师

    • 思想(面向接口编程)
  • 3.面试造火箭(理论),实际拧螺丝
    理论是指导实践的核心支持

  • 4.查看window的CPU核数

    1)计算机管理

    image-1662512413404

    2)任务管理器

    image-1662512425147

    3)代码获取

     System.out.println(Runtime.getRuntime().availableProcessors());
    
  • 5.任何牛逼的程序都是基于硬件的

    早期电脑都是单核的,1995年java诞生,当时多线程其实是假的多线程,有很多上下文切换

    现在多核出来后,可能一个线程独占一个CPU,原来是多个线程共享一个CPU(有竞争关系)

  • 6.java面向对象,需要什么new什么

    但是学过spring后,让自己new的机会很少

  • 7.池化技术

    DRUID

    ThreadPool