【转载保存】什么是线程阻塞?为什么会出现线程阻塞?

为什么会出现线程阻塞?

1.睡眠状态:当一个线程执行代码的时候调用了sleep方法后,线程处于睡眠状态,需要设置一个睡眠时间,此时有其他线程需要执行时就会造成线程阻塞,而且sleep方法被调用之后,线程不会释放锁对象,也就是说锁还在该线程手里,CPU执行权还在自己手里,等睡眠时间一过,该线程就会进入就绪状态,典型的“占着茅坑不拉屎”;

2.等待状态:当一个线程正在运行时,调用了wait方法,此时该线程需要交出CPU执行权,也就是将锁释放出去,交给另一个线程,该线程进入等待状态,但与睡眠状态不一样的是,进入等待状态的线程不需要设置睡眠时间,但是需要执行notify方法或者notifyall方法来对其唤醒,自己是不会主动醒来的,等被唤醒之后,该线程也会进入就绪状态,但是进入仅需状态的该线程手里是没有执行权的,也就是没有锁,而睡眠状态的线程一旦苏醒,进入就绪状态时是自己还拿着锁的。等待状态的线程苏醒后,就是典型的“物是人非,大权旁落“;

3.礼让状态:当一个线程正在运行时,调用了yield方法之后,该线程会将执行权礼让给同等级的线程或者比它高一级的线程优先执行,此时该线程有可能只执行了一部分而此时把执行权礼让给了其他线程,这个时候也会进入阻塞状态,但是该线程会随时可能又被分配到执行权,这就很”中国化的线程“了,比较讲究谦让;

4.自闭状态:当一个线程正在运行时,调用了一个join方法,此时该线程会进入阻塞状态,另一个线程会运行,直到运行结束后,原线程才会进入就绪状态。这个比较像是”走后门“,本来该先把你的事情解决完了再解决后边的人的事情,但是这时候有走后门的人,那就会停止给你解决,而优先把走后门的人事情解决了;

5.suspend() 和 resume() :这两个方法是配套使用的,suspend() 是让线程进入阻塞状态,它的解药就是resume(),没有resume()它自己是不会恢复的,由于这种比较容易出现死锁现象,所以jdk1.5之后就已经被废除了,这对就是相爱相杀的一对

转载链接:https://blog.csdn.net/sunshine_2211468152/article/details/87299708

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

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

相关文章

【转载保存】ThreadPoolExecutor类使用详解

线程启动原理线程中断机制多线程实现方式FutureTask实现原理线程池之ThreadPoolExecutor概述线程池之ThreadPoolExecutor使用线程池之ThreadPoolExecutor状态控制线程池之ThreadPoolExecutor执行原理线程池之ScheduledThreadPoolExecutor概述线程池的优雅关闭实践 转载&#x…

maven (http://repo1.maven.org/maven2/): Failed to transfer file 和PKIX path building failed: sun.secu

<?xml version"1.0" encoding"UTF-8"?> <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/SETTINGS/1.0.…

java中String、StringBuffer equals使用注意

equals方法 我们知道每个类其基类都是Object&#xff0c;Object默认的equals方式是: public boolean equals(Object obj) {if (this obj) {//先进行地址比较return true;}上面可以看出Object的equals方法比较两个对象的地址是否相等。 接着我们来说下String的equals方法实现…

maven 无效的源发行版11

我看自己的jdk配置都为8&#xff0c;感觉没问题&#xff0c;后来发现自己pom.xml文件配置的如下&#xff1a; <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId>…

去除html,获取某个标签里面内容

Document document Jsoup.parse(content);Elements ps document.getElementsByTag("p");//要解析的标签String pText "";for(Element p: ps){pText pText p.text();}

分布式集群架构场景解决方案学习笔记

课程学习 一致性哈希算法集群时钟同步问题分布式ID解决方案分布式任务调度问题session共享(一致性)问题 一致性哈希算法 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的&#xff0c;设计目标是为了解决因特网中的热点(Hot spot)问题&#xff0c…

@NotNull和@NonNull区别和使用

https://www.jianshu.com/p/32327ca2365f

常用的lucene分词器-笔记

1、 StopAnalyzer StopAnalyzer能过滤词汇中的特定字符串和词汇&#xff0c;并且完成大写转小写的功能。 2、 StandardAnalyzer StandardAnalyzer根据空格和符号来完成分词&#xff0c;还可以完成数字、字母、E-mail地址、IP地址以及中文字符的分析处理&#xff0c;还可以支…

分布式学习-总结

文章目录分布式理论分布式系统定义以及面临的问题分布式系统定义分布式面临的问题通信异常网络分区三态节点故障分布式理论&#xff1a;一致性概念分布式一致性的提出强一致性弱一致性最终一致性分布式事务CAP定理什么是CAP理论&#xff1f;为什么只能3选2能不能解决3选2的问题…

【转载保存】Netty实现单客户端多连接程序

https://blog.csdn.net/qq_40191710/article/details/92438631

什么叫死锁?死锁案例?死锁必须满足哪些条件?如何定位死锁问题?有哪些解决死锁策略?哲学家问题?

1.死锁是什么&#xff1f; 死锁一定发生在并发环境中&#xff0c;死锁是一种状态&#xff0c;当两个(或者多个线程)相互持有对方所需要的资源&#xff0c;却又都不主动释放手中持有的资源&#xff0c;导致大家都获取不到自己想要的资源&#xff0c;所有相关的线程无法继续执行…

zookeeper学习总结

一、介绍 轻量级集群框架&#xff0c;协同服务&#xff0c;保证高可靠、高可用&#xff0c;集中式服务&#xff0c;用于配置信息&#xff0c;名称服务&#xff0c;分布式同步处理树形层次结构&#xff0c;znode&#xff0c;动物管理员 二、zk组件 client 向server周期性的发…

dubbo启动服务启动报错.UnsatisfiedDependencyException: Error creating bean with name '***': Un

报错信息&#xff1a; 今天部署开发环境的时候这个问题弄了一下午&#xff0c;由于我本地启动是好的&#xff0c;然后部署到服务器老是启动不了&#xff0c;报如上错&#xff0c;后来经过排查发现是provider.xml和consumer.xml中的如下代码version属性版本信息不一致。 <du…

【转载保存】dubbo学习笔记

Dubbo Dubbo简介 首先&#xff0c;我理解的Dubbo&#xff0c;从大的方向来看是单体应用到分布式应用过度期的一个产物&#xff0c;具体来说应该是分布式应用从早期的SOA到微服务过度的一个产物。 在编写分布式场景下高并发、高扩展的系统对技能的要求很高&#xff0c;因为这…

即时通讯常用功能

功能列表 单人对单人实时聊天 用户在线状态判断 离线消息推送 用户好友关系保持以及验证 群组资料管理&#xff0c;人员管理 群组实时聊天 用户上线下线状态推送提醒 违禁词屏蔽

正则查看接口消耗时间超过4位数的

tail -40000 logs.log| grep -C 4 -E “[1-9]{4}ms”

shell读取文件并且遍历输出

#!/bin/bash addwords_path"/home/weijie/files" addwords_sizewc -l ${addwords_path} | awk {print $1} for ((i1; i< $addwords_size; i)); do wordsed -n ${i}p $addwords_patheval rm -rf ${word}echo "${word}" done

【转载保存】Mysql主从同步报错集锦

https://www.cnblogs.com/wangxin37/p/6398755.html

mysql搭建手册

mysql搭建手册 主从搭建 搭建mysql 关闭防火墙&#xff1a;systemctl stop firewalld 如果失败先安装 yum install iptables-services 配置数据库 /etc/my.cnf&#xff0c;配置同步数据库等 主库配置信息 [mysqld] datadir/usr/local/mysql/data log-error/usr/local/mysql/…

mysql中count(*),count(字段),count(1)的区别

count(主键id) InnoDB 会遍历全表&#xff0c;取每行的主键 id&#xff0c;返回给 server 层&#xff0c;server 层拿到数据后&#xff0c;进行判断累加。count(1) InnoDB 仍遍历全表&#xff0c;但是不取值&#xff0c;server 层对返回的每一行数据新增一个 1&#xff0c;然…