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

多线程一

时间:2024-07-05 23:32:25浏览次数:16  
标签:中断 jstack pid 线程 多线程 占用率 CPU

线程启动

线程生命周期

阻塞状态分为Blocked,time-waiting.外在表现区别不大,产生的原因不同,可以通过jstack查看,更具体的状态有助于我们排查线程相关问题。

下面这个时更为详细的生命周期图

线程停止

  • stop方法:不建议使用,类似于kill -9,不够优雅
  • interrupt():通过Thread.currentThread().isInterrupted() 来判断,类似于外部提供一个信号thread.interrupt(); //该方法是一个native方法
  • 线程复位:当线程捕获InterruptedException时,会自动复位。如果需要继续中断,需要手动在Catch部分重新中断。因为抛中断一场多是堵塞线程时发现,捕获异常同时有唤醒功能。是否继续中断的选择权在于开发者。

排查问题

  • CPU占用率很高
    top -c 查看pid
    top -H -p [pid]
    print "0x%x\n" [新pid]
    jstack [pid] | grep -A 20 [上一步16进制结果:占用CPU多的线程]
  • CPU占用率不高,但是响应很慢(死锁)
    jstack [进程] -可以看到类似 Found one Java-level deadlock 并且会有线程详细信息
欢迎大家留言,以便于后面的人更快解决问题!另外亦欢迎大家可以关注我的微信公众号,方便利用零碎时间互相交流。共勉!

标签:中断,jstack,pid,线程,多线程,占用率,CPU
From: https://www.cnblogs.com/caozz/p/18286763/thread001

相关文章

  • 并发、多线程和HTTP连接之间有什么关系?
    一、并发的概念 并发是系统同时处理多个任务或事件的能力。在计算中,这意味着系统能够在同一时间段内处理多个任务,而不是严格按照顺序一个接一个地执行它们。并发提高了系统的效率和资源利用率,从而更好地满足用户的需求。在现代应用程序中,用户可能会同时执行多个操作,例如同时......
  • Rust简明教程第九章-多线程和并发
    并发并发指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果进程是一个程序的实例线程是一个进程中执行的一个单一线性执行流程,一个进程包含多个线程,线程可以并发执行main是主线程,系统的入口区别:并发指一个系统能够......
  • python多线程与多进程开发实践及填坑记(1)
    1.需求分析1.1.概述基于Flask、Pika、Multiprocessing、Thread搭建一个架构,完成多线程、多进程工作。具体需求如下:并行计算任务:使用multiprocessing模块实现并行计算任务,提高计算效率、计算能力。消息侦听任务:使用threading模块完成RabbitMQ消息队列的侦听任务,将接收到......
  • Python多线程-线程池ThreadPoolExecutor
    1.线程池不是线程数量越多,程序的执行效率就越快。线程也是一个对象,是需要占用资源的,线程数量过多的话肯定会消耗过多的资源,同时线程间的上下文切换也是一笔不小的开销,所以有时候开辟过多的线程不但不会提高程序的执行效率,反而会适得其反使程序变慢,得不偿失。为了防止无尽的线程......
  • Windows编程之多线程事件对象(Event Object)用法详解
    目录一、前言二、基础用法三、API详解1.创建事件对象2控制事件状态3.等待事件对象:四、实战案例1.案例描述 2.代码设计 3.总设计代码4.运行结果一、前言        事件对象(EventObject)是我们在大型项目中,进行多线程同步处理的时候经常用到的一种内核对象......
  • 18. JAVA 多线程锁介绍
    1.前言本节内容主要是对Java多线程锁进行介绍,是对锁的一个全方位的概述,为我们对后续深入学习不同的锁的使用方法奠定一个良好的基础。本节内容的知识点如下:乐观锁与悲观锁的概念,以及两种锁之间的区别,这是并发编程中经常涉及到的知识点,这是本节课程的核心知识点,是热度很高......
  • Java_多线程:线程池
    1、线程池优点:降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性:线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一......
  • 【Linux】多线程(互斥 && 同步)
    我们在上一节多线程提到没有任何保护措施的抢票是会造成数据不一致的问题的。那我们怎么办?答案就是进行加锁。目录加锁:认识锁和接口:初始化:加锁&&解锁:全局的方式:局部的方式:原理角度理解:实现角度理解:同步:加锁:认识锁和接口:初始化:这个就是我们互斥锁的类型。......
  • 多线程笔记
    目录1.概念进程与线程的区别:多线程的概念 多线程优缺点​编辑创建多线程的几种方式1、继承Thread类2、实现Runnable接口3、实现Callable接口实现Runnable和Callable有什么区别:相同点:不同点:注意点:4、线程池实现多线程创建线程的方式的比较实现runnable和继承t......
  • python爬虫3-多进程多线程协程
    多进程和多线程frommultiprocessingimportProcessimportthreadingdefprocess_worker():foriinrange(200):print(f"Processworker{i}")defthread_worker():foriinrange(200):print(f"Threadworker{i}")if__......