首页 > 编程语言 >50000多字,线程池源码详解!建议收藏

50000多字,线程池源码详解!建议收藏

时间:2023-06-08 23:36:12浏览次数:52  
标签:50000 Name Thread void 源码 线程 main public


你好,我是田哥。

很多人对线程池总是一知半解,希望通过此文让你彻底的掌握线程池。不管是工作还是面试,这篇文章一定让你满载而归,学完这一篇,从此不再怕线程池。

另外,除了能掌握线程池的技术以外,更多的是学会大佬们的设计思想。

本文属于付费文,7个豆(1块钱),主要是文末有技术文档分享和技术分享群,付费有效屏蔽掉广告和非技术人员。

tips:所有的付费文章,都会收纳到我的知识星球上。

本文主要内容如下:


50000多字,线程池源码详解!建议收藏_编程语言

基础铺垫

我们想深入学习线程池,那我们肯定是需要先搞清楚线程池的来历,为什么会有线程池。

线程池,从字面意义上来说,:线程+,也就是大家所说的池化技术。

我们回到线程, 烂大街的创建线程方式,这里就不在提了,在我的面试小抄里也有(公众号里回复77获取面试小抄)。

举个炒鸡简单的线程使用例子:

public class ThreadPoolExecutorDemo {

    public static void main(String[] args) {
        //打印主线程名称
        System.out.println("main Thread Name: " + Thread.currentThread().getName());
        //创建线程
        Thread myThread = new Thread(new Runnable() {
            @Override
            public void run() {
                //打印子线程名称
                System.out.println("sub Thread Name: " + Thread.currentThread().getName());
            }
        });
        //启动线程
        myThread.start();
    }
}

启动主线程执行main方法,输出主线程名称,然后启动子线程,此时子线程任务也很简单,就是简单的打印当前线程名称。

输出结果:

main Thread Name: main
sub Thread Name: Thread-0

上面这个案例是一个单线程,我们下面来启动多线程。

public class MultipleThread {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            createThread();
        }
    }

    private static void createThread() {
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("Thread Name: " + Thread.currentThread().getName());
            }
        });
        thread.start();
    }
}

执行结果:

Thread Name: Thread-0
Thread Name: Thread-4
Thread Name: Thread-8
Thread Name: Thread-3
Thread Name: Thread-7
Thread Name: Thread-1
Thread Name: Thread-5
Thread Name: Thread-9
Thread Name: Thread-2
Thread Name: Thread-6

标签:50000,Name,Thread,void,源码,线程,main,public
From: https://blog.51cto.com/u_11702014/6444216

相关文章

  • 【刨根问底】BigDecimal 案例和部分源码分析
    本文总以下几个部分:前言Bigdecimal定义Bigdecimal创建方式Bigdecimal部分源码分析Bigdecimal坑Bigdecimal使用建议Bigdecimal工具类前言在咱们开发过程中很容易遇到计算的问题,普通计算其实也还好使用int、long、double、float基本上能应付。但是如果涉及到数据类型转后在处理等......
  • 写给小白看的线程池,还有10道面试题
    为什么要用线程池呢?下面是一段创建线程并运行的代码:for(inti=0;i<100;i++){newThread(()->{System.out.println("runthread->"+Thread.currentThread().getName());userService.updateUser(....);}).start();}我们想使用这种方式去做......
  • 5000字、12 连环炮、一张图快速搞定线程池
    写在前面前面文章中,我们总结了JVM18连环炮、并发并最基础的12连环炮,建议先阅读:连环炮继续走起,今天我给大家总结了线程池的12连环炮。1、为什么要创建线程池?2、创建线程池有哪些方式?3、Executors能创建几种常用线程池?4、线程池有哪些参数?5,能说说线程池原理吗?6、线程池有哪些拒绝策......
  • 深入源码探讨HashSet
    我们在工作中时常会用到HashSet,面试也有时候容易被问到,下面咱们就来聊聊HashSet。使用案例publicclassTest{publicstaticvoidmain(String[]args){HashSet<String>hashSet=newHashSet<>();hashSet.add("Java");hashSet.add("R");......
  • 深入探讨源码-HashMap
    又聊到HashMap了,其实网上已经有很多关乎HashMap的文章了,本文将对HashMap的实现方式和一些关键点进行一一的说明,仅限个人理解,如有疑惑和问题,请联系作者更正。说明:JDK版本1.8.0_151HashMapHash表是一个数组+链表的结构,这种结构能够保证在遍历与增删的过程中,如果不产生hash碰撞,仅需一......
  • 源码安装redis-migrate-tool(redis迁移工具)部署安装
    源码安装redis-migrate-toolredis-migrate-toolunzipredis-migrate-tool-master.zipcdredis-migrate-tool-masteryum-yinstallautomakelibtoolautoconfbzip2autoreconf-fvi./configuremake./src/redis-migrate-toolrmt.conf配置项修改[source]typ......
  • BitSet的源码研究
    这几天看BloomFilter,因为在java中,并不能像C/C++一样直接操纵bit级别的数据,所以只能另想办法替代:1)使用整数数组来替代;2)使用BitSet;BitSet实际是由“二进制位”构成的一个Vector。如果希望高效率地保存大量“开-关”信息,就应使用BitSet。它只有从尺寸的角度看才有意义;如果希望的高效率......
  • Java拓展-拆,装箱,线程,反射
    导言:在学习JavaSE的时候,我们会使用Java基础编程,并且了解了什么是面向对象的编程,会使用Java写一些基础算法程序,接下来,我们需要了解Java的自动拆箱和自动装箱,单线程和多线程,反射是什么,值得注意的是,讲的是Java中的特性,但是OOP语言其实都是用这些操作的,只是小部分不同罢了一.自动拆......
  • JAVA的springboot+vue学习平台管理系统,校园在线学习管理系统,附源码+数据库+论文+PPT
    1、项目介绍在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括学习平台的网络应用,在外国学习平台已经是很普遍的方式,不过国内的管理平台可能还处于起步阶段。学习平台具有学习信息管理功能的选择。学习平台采用java技术,基于springboot框架,mysql数据库进行......
  • JS引擎中的线程,事件循环,上下文
     线程浏览器中有哪些进程呢?1.浏览器进程:浏览器的主进程,负责浏览器的界面界面显示,与用户交互,网址栏输入、前进、后退,以及页面的创建和销毁。2.渲染进程(浏览器内核):默认一个tab页面一个渲染进程,主要的作用为页面渲染,脚本执行,事件处理等。3.GPU进程:用于3D绘制等,将开启了3D绘制......