Java线程池中线程的状态简介

首先明确一下线程在JVM中的各个状态(JavaCore文件中)

1.死锁,Deadlock(重点关注)

2.执行中,Runnable(重点关注)

3.等待资源,Waiting on condition(重点关注)

4.等待监控器检查资源,Waiting on monitor(eg:如果使用System.out.println等需要分配计算机资源的时候线程会如此等待,主要还需看堆栈)

5.暂停,Suspended

6.对象等待中,Object.wait()

7.阻塞,Blocked(重点关注)

8.停止,Parked(此状态必须明确,与字面意思不同,主要是指线程空闲时候的状态.如在线程池中,当线程被调用使用后再次放入到池子中,则其状态变为了Parked)

Java基本线程池的实现

public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue

参数详解如下:

corePoolSize -池中所保存的线程数,包括空闲线程.(核心线程)

maximumPoolSize -池中允许的最大线程数。

keepAliveTime -当线程数大于核心时,此为终止前多余的空闲

线程等待新任务的最长时间。

unit – keepAliveTime参数的时间单位。

workQueue -执行前用于保持任务的队列。此队列仅保持由execute

方法提交的Runnable任务。

上述参数队列workQueue与corePoolSize,maximumPoolSize的关系为:

如果corePoolSize中的线程使用完,则会使用队列workQueue,队列使用完才会按照maximumPoolSize的大小启动新的线程

对与JavaCore文件的生成针对不同的操作系统使用不同的指令

linux与unix使用的指令为:jstack -l pid >>core文件名字

IBM for aix使用的指令为:kill -3 pid

另外根据测试情况来看.parked状态的线程在linux与unix上体现不出来.只有在aix上parked状态的线程才能体现出来,估计这和不同的JVM的实现有关系

parked状态的由来:只有被使用过的线程再次放入线程池中才被赋予这种状态

Original: https://www.cnblogs.com/bailiyi/p/5317380.html
Author: 百里弈
Title: Java线程池中线程的状态简介

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/684240/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 古传拳经拳法秘要

    《古传拳经拳法秘要》(手抄本) 国术馆 2022-05-05 18:33 更多珍贵拳谱资料 关注公众号”老拳谱” 勿使前辈之遗珍失于我手 点击图片了解与报名…

    技术杂谈 2023年5月31日
    090
  • JavaCV的摄像头实战之一:基础

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于《JavaCV的摄像头实战》系…

    技术杂谈 2023年7月11日
    099
  • 面试官:你说你精通Redis,你看过持久化的配置吗?

    前边我们已经介绍了 Redis 五种数据类型的命令与 配置文件的基本配置,今天让我们从理论和配置两个层面来揭开 Redis持久化的神秘面纱。 所谓持久化可以简单理解为将内存中的数据…

    技术杂谈 2023年7月11日
    0104
  • Spark基本知识

    Spark基本知识 Spark 是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 Hadoop Hadoop 是由 java 语言编写的,在分布式服务器集群上存储海量数据并…

    技术杂谈 2023年7月11日
    0132
  • 调试 ambari-server 总结

    刚开始debug ambari-server的时候,很多逻辑都是第一次接触。其中有很多知识点还是记录一下的好,做个备忘。这些知识点对于自定义api的开发还是很有作用的。 1. ap…

    技术杂谈 2023年7月25日
    099
  • Django Model 如何返回空的 QuerySet

    >>> from django.contrib.auth.models import User >>> User.objects.none() …

    技术杂谈 2023年6月21日
    0145
  • 负载均衡在web系统中的应用

    在日常的架构设计与开发中,常用的负载均衡算法主要分为静态和动态两类。静态负载算法以固定的频率分配任务不考虑服务器的状态信息,如轮询法、随机法等;动态负载均衡算法以服务器的实时负载状…

    技术杂谈 2023年7月25日
    0103
  • 【远程办公】Mixin 团队招聘

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年5月31日
    0100
  • nodejs终端字符样式和进度条

    Nodejs为终端字符增加样式 只有黑白的色调对于比较复杂的命令行程序来说就显得太单调了,我们可以为命令行程序增加样式使得程序更加友好! 安装package: npm instal…

    技术杂谈 2023年5月31日
    0111
  • vue、js前端map排序

    html;gutter:true; objSortByVal(obj) { let keyArr = [],valArr = []; for (let key in obj) { …

    技术杂谈 2023年5月31日
    0103
  • 8086汇编 call 指令

    8086汇编 call 指令 字面意思:调用子程序实质:流程转移指令,它们都修改IP,或同时修改CS和IPcall指令实现转移的方法和 jmp 指令的原理相似格式:call 标号 …

    技术杂谈 2023年6月1日
    097
  • 5分钟搞定ORACLE到ClickHouse数据迁移同步-CloudCanal实战

    ClickHouse 是一种流行的列式数据库,对于计算 uv、mv、pv 等聚合类数据相当友好,所以广泛使用于各类报表场景。 本文主要介绍如何使用 CloudCanal 快速构建一…

    技术杂谈 2023年7月24日
    092
  • 【赵渝强老师】史上最详细的PostgreSQL体系架构介绍

    PostgreSQL是最像Oracle的开源数据库,我们可以拿Oracle来比较学习它的体系结构,比较容易理解。PostgreSQL的主要结构如下: 一、存储结构 PG数据存储结构…

    技术杂谈 2023年7月24日
    0102
  • C7N 重置 queryDataSet

    场景: F型布局的页面,点击左侧列表,右侧详情页面的数据需要更新,当时发现详情页中 queryDataSet 数据没有重置 思路: 调用 DataSet 中的 reset 方法,重…

    技术杂谈 2023年5月30日
    098
  • 字符串匹配之Sunday算法

    简介 Sunday算法是一种字符串匹配算法,相比于KMP算法,它比较简单易学。 在有些时候,比如字符串很长的时候,它是比KMP要高效的。 核心思想 从前往后匹配,匹配失败时关注主串…

    技术杂谈 2023年7月11日
    0101
  • SpringSecurity中的CSRF解读

    从刚开始学习SpringSecurity时,在配置类中一直存在这样一行代码:http.csrfo.disable() 如果没有这行代码导致用户无法被认证。这行代码的含义是:关闭 c…

    技术杂谈 2023年7月11日
    093
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球