首页 > 其他分享 >线程与多线程

线程与多线程

时间:2024-08-11 20:27:58浏览次数:11  
标签:状态 执行 队列 running 任务 线程 多线程

1. 线程

1. 线程状态

线程状态分为5种 
new  
runable -> 分为 ready 和 running
阻塞
等待  -> 分为waiting 和 time_waiting
销毁

1.2 线程数量配置

IO密集型 = CPU * 2
cpu密集型 = CPU + 1

2. 线程池

2.1 线程池核心参数

线程池一共7个核心参数,分别是核心线程数、最大线程数、存活时间、时间单位、线程工厂、拒绝策略和阻塞队列

2.2 线程池任务流程

当线程池接收一个任务后,首先判断当前线程状态, 只有处于running 时,才会接收新任务
否则抛弃,然后判断线程数是否小于核心线程数,小于创建线程并执行,否则判断阻塞队列是否满了,
没满添加,满了则判断线程数是否小于最大线程数,小于新建线程执行任务,大于等于执行拒绝策略

2.3 拒绝策略

直接抛异常 about
直接丢弃 discard
丢弃老任务 disOldCard 
交由调用者处理 callRuns 
自定义策略,没定义过

2.4 线程池状态

线程池的状态是由 ThreadPoolExeator 中的ctl 进行维护的,它的高三位是线程状态,低29位是工作线程数
线程一共5种状态,running、shutdown、stop、tidying 和销毁
running 接受新任务,执行队列任务
shutdown 不接受新任务,执行队列任务
stop 不接受新任务,不执行队列任务, 中断当前任务
tidying 有效线程数为0
最后销毁

标签:状态,执行,队列,running,任务,线程,多线程
From: https://www.cnblogs.com/antordragon/p/18353848

相关文章

  • Linux:线程同步机制(互斥锁、读写锁、条件变量、信号量详细分析总结)
    目录速览1、互斥锁(1)What(什么是互斥锁)(2)Why(互斥锁的用途)(3)How(如何使用互斥锁)(4)代码实践2、读写锁(1)What(什么是读写锁)(2)Why(读写锁的作用)(3)How(如何使用读写锁)(4)读写锁的特征3、条件变量(1)What(什么是条件变量)(2)Why(条件变量的作用)(3)How(如何使用条件变量实现线程......
  • 多线程复习总结
     1基本概念1什么是进程什么是线程进程:是程序执行一次的过程,他是动态的概念,是资源分配的基本单位。一个应用程序(1个进程是一个软件)。线程:一个进程可以有多个线程,线程是cpu调度的单位,一个进程中的执行场景/执行单元。对于java程序来说,当在DOS命令窗口中输入:javaHelloWorld回......
  • 单例模式-饿汉、懒汉(线程安全、双重检查锁定)、静态内部类、枚举
    1饿汉式这种方式是最简单的单例模式实现,它在类加载的时候就创建了单例对象。优点实现简单线程安全缺点无论是否使用,都会加载单例类并创建单例对象publicclassSingleton{privatestaticfinalSingletonINSTANCE=newSingleton();privateSingleton(){......
  • 【Redis进阶】Redis单线程模型和多线程模型
    目录单线程为什么Redis是单线程处文件事件理器的结构文件处理器的工作流程总结文件事件处理器连接应答处理器命令请求处理器命令回复处理器多线程为什么引入多线程多线程架构多线程执行流程关于Redis的问题Redis为什么采用单线程模型Redis为什么要引入多线程呢......
  • Linux C++ 多线程编程
    LinuxC++多线程编程参考教程:c++:互斥锁/多线程的创建和unique_lock<mutex>的使用_mutex头文件vc++-CSDN博客1.编写unique_mutex1.1创建文件夹通过终端创建一个名为unique_mutex的文件夹以保存我们的VSCode项目,在/unique_mutex目录下打开vscode。rosnoetic@rosnoetic-Virt......
  • Python和多线程(multi-threading)
    在Python中,实现并行处理的方法有几种,但由于Python的全局解释器锁(GIL,GlobalInterpreterLock)的存在,传统意义上的多线程(使用threading模块)并不总能有效利用多核CPU来实现真正的并行计算。GIL确保任何时候只有一个线程在执行Python字节码。不过,仍然有几种方法可以绕过这个限制,......
  • Java - 多线程
    三种实现方式常用成员方法1.线程name默认“Thread-”+"序号"2.可以通过重写构造方法在创建时给线程命名线程的生命周期与状态同步代码块格式synchronized(锁对象){操作共享数据的代码}1.锁对象随机,但只要是有static修饰的唯一对象,一般写本类class文件,如MyTh......
  • C#多线程并发编程深度探索:解锁async、await、Task与lock等关键字的奥秘
    一、多线程介绍1.什么是多线程多线程是指在一个应用程序中同时执行多个线程的能力。每个线程都是独立运行的,拥有自己的执行路径和资源。多线程编程能够充分利用多核处理器的计算能力,提高应用程序的性能和响应性,特别是在处理耗时任务和并行计算时效果显著。在C#中,线程是程序......
  • 线程间的礼貌竞争:避免活锁现象
    线程间的礼貌竞争:避免活锁现象在多线程编程中,我们经常会遇到各种同步问题,其中一种比较特殊的情况被称为“活锁”(livelock)。活锁是一种递归情况,多个线程在执行过程中不断重复某段代码逻辑,这些线程通常是为了给其他线程让路而主动放弃执行机会。这就像两个在狭窄走廊上相遇......
  • 【JavaEE初阶】线程安全的集合类
    ......