线程的几个状态

  • Runnable:一般指该线程正在执行状态中,该线程占用了资源,正在处理某个请求,例如有可能在对某个文件操作,有可能进行数据类型等转换。
  • Waiting on condition:等待资源,或等待某个条件的发生。具体原因需结合stacktrace来分析。
    • 如果堆栈信息明确是应用代码,则证明该线程正在等待资源。一般是大量读取某资源,且该资源采用了资源锁的情况下,线程进入等待状态,等待资源的读取。
    • 又或者正在等待其他线程的执行等。
    • 如果发现有大量的线程都在处在 Wait on condition,从线程 stack看,正等待网络读写,这可能是一个网络瓶颈的征兆。因为网络阻塞导致线程无法执行。
      • 一种情况是网络非常忙,几乎消耗了所有的带宽,仍然有大量数据等待网络读写;
      • 另一种情况也可能是网络空闲,但由于路由等问题,导致包无法正常的到达。
    • 另外一种出现 Wait on condition的常见情况是该线程在 sleep,等待 sleep的时间到了时候,将被唤醒。
  • Blocked:线程阻塞,是指当前线程执行过程中,所需要的资源长时间等待却一直未能获取到,被容器的线程管理器标识为阻塞状态,可以理解为等待资源超时的线程。
  • Waiting for monitor entry 和 in Object.wait():Monitor是 Java中用以实现线程之间的互斥与协作的主要手段,它可以看成是对象或者Class的锁。每一个对象都有,也仅有一个 monitor。从下图1中可以看出,每个 Monitor在某个时刻,只能被一个线程拥有,该线程就是 “Active Thread”,而其它线程都是 “Waiting Thread”,分别在两个队列 “ Entry Set”和 “Wait Set”里面等候。在 “Entry Set”中等待的线程状态是 “Waiting for monitor entry”,而在 “Wait Set”中等待的线程状态是 “in Object.wait()”。

http://images.cnblogs.com/cnblogs_com/zhengyun_ustc/255879/o_clipboard%20-%20%E5%89%AF%E6%9C%AC039.png

图 Java Monitor(图片来自网络)

转载于:https://www.cnblogs.com/dailidong/p/7571145.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++ 数组的输入遇到特定字符停止输入_滑动窗口思维--挑战“无重复字符的最长子串”

文章来源: 饭饭的Python学习之路作者: 一粒米饭今天要挑战的是“无重复字符的最长子串”。难度:中等题目描述:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例1:输入: "abcabcbb"输出: …

Effective C++ 读书笔记(八)

8 定制new和delete 条款49:了解new-handler的行为 new_handler set_new_handler (new_handler new_p) throw(); Sets new_p as the new handler function, the old one is returned. operator new抛出异常以反映一个未获满足的内存需求之前,它会先调…

12.8 早晨我一直在假笑,为了骗自己

最近不知道为啥,总是凌晨醒来,然后睡不着了就,再然后就会控制不住的想一些事情一些人一些工作。之前听别人这样说的时候,都觉得很奇怪,现在轮到自己了 大概是因为压力过大?精神已经超级紧绷啦?还是因为。。…

Restful HMAC认证

我们在设计REST(Representational State Transfer)风格的Web service API,有一个问题经常要考虑,就是如何设计用户认证的体系(Authentication). 比较传统的做法是首先有一个登陆的API,然后服务器返回一个session ID,后续的操作客户端都必须带上这个sess…

docker 打包_Springboot2.0学习11 使用maven插件打包docker部署应用

一、本文目标使用Maven插件构建SpringBoot应用的docker镜像镜像推送至Docker Registry启动容器本文开发环境 :jdk1.8mavenideaSpringBoot2.2本文使用 com.spotify 的 docker-maven-plugin插件执行docker命令。据说官方不再推荐使用该插件,而是使用 docke…

java一个源文件供一个程序_java02 Java源文件范例提供了一个布局合理的Java程序范例 - 下载 - 搜珍网...

新建文件夹/day04/CheckString.class新建文件夹/day04/CheckString.java新建文件夹/day04/EqualsTest.class新建文件夹/day04/EqualsTest.java新建文件夹/day04/ReferencesTest.class新建文件夹/day04/ReferencesTest.java新建文件夹/day04/SetPoints.class新建文件夹/day04/Se…

[转帖]Mootools源码分析-49 -- Asset

原帖地址:http://space.flash8.net/space/?uid-18713-action-viewspace-itemid-410355 原作者:我佛山人 代码 //脚本,样式和图片的资源加载varAsset newHash({ //脚本资源的加载javascrīpt: function(source, properties) { //合并属性项…

桌面壁纸大全:50套高清 Mac 桌面壁纸背景【下篇】

这篇文章收集一组非常精美的 Mac 高清桌面壁纸分享给大家,这些都是仔细挑选的完美图片。挑选一张自己最喜欢的 Mac 高清桌面壁纸给你的电脑换上,让你的电脑看起来与众不同。 您可能还喜欢 分享18套精美的苹果风格免费图标素材10套精美的免费网站后台管理…

SpeedyCloud研发总监李孟:不要让底层细节被上层打败

随着互联网的发展,对于现代企业来说,DNS与CDN服务的作用正变得愈发重要,网络访问速度决定了前端客户体验,同时也影响着内部业务系统的运行。SpeedyCloud作为一家新晋IaaS云服务供应商,在DNS与CDN方面同样拥有丰富的实践…

springboot 关闭懒加载_SpringBoot新手入门篇

SpringBoot是干哈的介绍:springboot是由Pivotal团队提供的全新框架。spring的出现是为了解决企业级开发应用的复杂性,spring的通过注册bean的方式来管理类,但是随着业务的增加,使用xml配置bean的方式也显得相当繁琐,所…

java.security.key jar_异常: java.security.InvalidKeyException: Illegal key size

今天在做接口测试的时候遇到个异常:java.security.InvalidKeyException: Illegal key size。SecretKeySpec secretKeySpec new SecretKeySpec(aesKey, "AES");Cipher cipher Cipher.getInstance("AES/CTR/NoPadding");IvParameterSpec ips c…

CACTI 0.87e 安装

Cacti 是一个使用 RRDtool 引擎的基于网页的 PHP/MySql 图形解决方案。 Classically, 它可以使用 SNMP 来绘制网络带宽。但事实上,也可以通过 snmp,shell 或者 perl 脚本来绘制很多不同的图形。在 屏幕截图 部分,你可以浏览使用 Cacti 可以绘…

NodeManager启动流程与服务

本文介绍了NodeManager的启动流程与服务. NodeManager主流程 在main方法中new一个 NodeManager, 然后初始化并启动. 这里主要看initAndStartNodeManager方法. 首先是增加一个shutDownHook, 即CompositeServiceShutdownHook, 它的目的是为了在NodeManager crash的时候停止compos…

Unity3D的断点调试功能

这篇文章介绍的调试工具是Unity自带的MonoDevelop, 假设要用VS,须要下载unityvs http://unityvs.com/. http://liweizhaolili.blog.163.com/blog/static/162307442013214485190/ 断点调试功能可谓是程序猿必备的功能了。Unity3D支持编写js…

java模拟器分辨率_android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配注意事项...

1 Android手机目前常见的分辨率1.1 手机常见分辨率:4:3VGA 640*480 (Video Graphics Array)QVGA 320*240 (Quarter VGA)HVGA 480*320 (Half-size VGA)SVGA 800*600 (Super VGA)5:3WVGA 800*480 (Wide VGA)16:9FWVGA 854*480 (Full Wide VGA)HD 1920*1080 High D…

python中if else语句用法_Python中if-else语句的多种写法

原博文 2017-02-06 10:24 − 初学Python在看程序时发现python中if-else的多种写法,故对其进行分析。 以下为网络内容: a, b, c 1, 2, 3 1.常规 if a>b: &nb... 相关推荐 2019-11-13 15:13 − if x A: do something for A elif x B: do somethi…

Javascript中最常用的55个经典技巧

1. οncοntextmenu"window.event.returnValuefalse" 将彻底屏蔽鼠标右键<table border οncοntextmenureturn(false)><td>no</table> 可用于Table 2. <body onselectstart"return false"> 取消选取、防止复制 3. οnpaste"…

Reflux系列01:异步操作经验小结

写在前面 在实际项目中&#xff0c;应用往往充斥着大量的异步操作&#xff0c;如ajax请求&#xff0c;定时器等。一旦应用涉及异步操作&#xff0c;代码便会变得复杂起来。在flux体系中&#xff0c;让人困惑的往往有几点&#xff1a; 异步操作应该在actions还是store中进行&…

mysql 存储过程月单拆天单_MySQL之存储过程按月创建表的方法步骤

具体不多说&#xff0c;直接上代码。欢迎一起交流和学习。创建一个按月创建表的存储过程&#xff0c;SQL语句如下:DELIMITER //DROP PROCEDURE IF EXISTS create_table_by_month //CREATE PROCEDURE create_table_by_month()BEGIN#--提前申明变量,后面会用到DECLARE nextMonth …

python转换成c语言_把python转成c

广告关闭 腾讯云11.11云上盛惠 &#xff0c;精选热门产品助力上云&#xff0c;云服务器首年88元起&#xff0c;买的越多返的越多&#xff0c;最高返5000元&#xff01; 推荐使用腾讯云 api 配套的7种常见的编程语言 sdk&#xff0c;已经封装了签名和请求过程&#xff0c;均已开…