当前位置: 首页 > news >正文

建设旅游网网站软件电脑学校培训

建设旅游网网站软件,电脑学校培训,网站上滚动图片如何做,肇庆百度网站推广哈喽,大家好~我是保护小周ღ,本期为大家带来的是 Java 多线程的 线程的状态,New 新建状态,Runnable 运行状态,Blocked 阻塞状态,waiting 等待状态,Time_Waiting 超时等待状态,Termin…
哈喽,大家好~我是保护小周ღ,本期为大家带来的是 Java 多线程的 线程的状态,New 新建状态,Runnable 运行状态,Blocked 阻塞状态,waiting 等待状态,Time_Waiting 超时等待状态,Terminated 终止状态,以及展示线程的状态的常用方法。
更多精彩敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★* ‘

一、线程的状态

表示线程当前所处的一个情况 ,线程有6 种状态,下文会详细讲述;

  1. New 新建状态:线程还没出创建,只有Thread 实例化的对象,调用start 方法之前的状态。

  1. Runnable 运行状态:被系统调度后,CPU 正在执行的,Ready 就绪态,系统调度,随时准备被CPU 执行。

  1. Blocked 阻塞状态:线程遇到某种机制之后不参与 CPU的调度执行,等待某个条件的触发唤醒线程

  1. waiting 等待状态: 无限期等待(死等)

  1. Time_Waiting 超时等待状态:设置了最大等待时间,超出最大等待时间就换醒线程

  1. Terminated 终止状态:线程生命周期结束后的状态

1.1 举例理解

关于线程的状态博主举个例子理解一下:

1. 张三和李四(两个线程)是邻居,他们打算一起去银行办理业务,首先他们两个到银行后进行挂号操作(new 新建状态),随后他们两个人在大厅的排队等待呼叫(线程 READY就绪状态)
2. “请 102号顾客来 1号窗口办理业务 —— 张三),当银行呼叫张三来1 号窗口办理业务我们可以看作是线程的调度,1号窗口我们认为是 CPU 的核心处理单元,为张三办理业务(处理线程),张三听到呼叫后,马上来到1号柜台,柜台小姐姐正式为张三办理业务(线程的运行状态)
3. 张三话不多说直接银行卡身份证递给小姐姐,张口就是我要取5 万块钱,小姐姐让张三输入密码,此时张老铁将银行卡密码忘记了,尝试了几次都不能成功,于是就给老婆打电话询问,结果显示正在通话中,无奈之下,只能感到很无奈,匆匆下线,那么导致业务办理不成功(线程堵塞)的原因是:忘记了密码。
4. 因为张三忘记了密码,暂时无法获取密码(老婆电话通话中),无法继续处理业务,所以陷入阻塞等待(可以联系上老婆询问密码),所以银行呼叫了下一个用户,请 103号顾客来 1号窗口办理业务 —— 李四),此时银行1号窗口可以看作是并行或并发的处理多线程,李四来处理业务就是从就绪状态到运行状态,李四张口就来,我要取 50万,柜台小姐姐说很抱歉暂时无法为您办理业务,根据规定大额取款需要提前三天预约,这边只能为您办理预约业务,您三天后可以来取,此时李四线程陷入了(等待状态,但是具有时效性,线程需要等3天就可以继续执行了),三天后李四的业务就可以继续处理。
5. 这边处理李四业务的时候,张三老铁终于拨通了电话,询得了密码,那么张三老铁又可以(此时忽略挂号)重新排队(张三获得密码,就从阻塞状态中唤醒,来到就绪状态准备被CPU 调度处理),请 104号顾客来 1号窗口办理业务 —— 张三,伴随着银行的呼叫,张三再次被调度,根据询问的密码,输入密码时提示成功,张老铁欣喜若狂,结果柜台小姐姐告知银行存款不足,无法取出相应的5万元金额(无法办理取钱业务),需要等待银行余额充裕后方可继续进行取钱,所以张三再次陷入等待状(线程等待)。
6. 当银行继续处理几个存钱业务后金额足够(线程等待结束条件),再呼叫张三来排队取钱,将张三从等待状态中唤醒,张三就继续排队(就绪),银行窗口办理业务(运行),取钱成功,线程结束。

1.2 阻塞、等待状态的同异

等待、阻塞可以看作不参加 CPU 的调度了,系统也不会安排该状态的线程被CPU 执行,两者的区别是:进入等待状态是线程主动的,而进入阻塞状态是被动的。

阻塞等待:

线程阻塞指一个线程在执行过程中暂停,等待某个条件的触发。一般会发生在线程加锁的情况下(synchronized),例如:两个线程同时对一片内存空间的数据进行增删查改,线程之间又是随机调度,很容易造成数据的误差问题,此时我们需要对该事务进行加锁操作(synchronized),什么意思,多线程之间并发执行,对事物加锁后,当一个线程对事物进行处理的时候,不允许其他线程对该事物进行操作,那么竞争事物的这个线程就会进行阻塞等待,直到先运行的线程对事物执行完毕。

运行的线程执行wait()方法,JVM(java虚拟机)会把该线程放入等待池中。wait() 方法:释放当前对象锁,然后使该线程进入等待状态“死等”(带参数的版本可以指定最大等待时间),不带参数的wait() 方法 需要其他线程使用notify() 方法来唤醒调用 wait() 方法的线程,当然 wait() 方法是建立在有锁对象的情况下(synchronized)。等到线程安全的章节博主再详细介绍

同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池中,举个例子:两个线程同时处理一个“事务”势必会造成数据的安全问题,。


线程等待:

线程等待:运行的线程执行sleep()或join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep() 线程休眠需要执行休眠时间,join() 方法线程等待,例如 : main 线程 调用 t.join 方法,意思就是 mian 线程需要等待 t 线程执行完毕后再执行自己,“死等”线程串行执行,join() 提供了一个带参数的版本可以指定最大等待时间,线程等待一般发生在主动的使线程进入等待状态。

BLOCKED 表示等待获取锁, WAITING 和 TIMED_WAITING 表示等待其他线程发来通知.

TIMED_WAITING 线程在等待唤醒,但设置了时限; WAITING 线程在无限等待唤醒


二、展示线程的常用方法

2.1 Thread.getState() 方法显示线程的状态

public static void main(String[] args) throws InterruptedException {Thread t = new Thread( () -> {while (true) {try {Thread.sleep(1500);} catch (InterruptedException e) {e.printStackTrace();}synchronized (Thread.currentThread()) {System.out.println("线程 T执行");try {Thread.currentThread().wait(); // 返回当前线程引用} catch (InterruptedException e) {e.printStackTrace();}}}});t.start(); //启动System.out.println(t.getState()); // 此时是主线程在判断 t 线程的状态,二者并无影响 Runnablet.sleep(1000); //t 线程休眠一秒 Time_WaitingSystem.out.println(t.getState());t.sleep(1000); //等待 t 线程调用 wait() 方法进入死等状态System.out.println(t.getState());}

2.2 isAlive 方法判定线程的存活状态

isAlive() 方法,可以认为是处于不是 NEW 和 TERMINATED 的状态都是活着的

2.3 yield() 主动结束CPU 调度执行

让出 CPU的执行时间片, yield 不改变线程的状态, 但是会让调用的线程由运行状态重新进入就绪(排队)状态,二者都是属于运行状态,只不过是CPU 并发执行线程,有人正在执行就有人准备被执行。

 public static void main(String[] args) throws InterruptedException {Thread t = new Thread( () -> {int i = 0;while (true) {i++;System.out.print("t 线程执行");if((i + 1 )% 10 == 0) {System.out.println();}Thread.currentThread().yield(); //让出CPU 执行时间片}});t.start(); //启动int i = 0;while (true) {System.out.print("main 线程执行");i++;if((i + 1 )% 10 == 0) {System.out.println();}}}

由此可见本来是两个线程并发执行,但是由于 t 线程调用 yiele()方法后主动让出 CPU 的时间片,所以多数情况下是 main 线程在执行。


至此,Java 线程的状态,博主已经分享完了,希望对大家有所帮助,如有不妥之处欢迎批评指正。

本期收录于博主的专栏——JavaEE,适用于编程初学者,感兴趣的朋友们可以订阅,查看其它“JavaEE基础知识”。

下期预告:线程安全相关问题

感谢每一个观看本篇文章的朋友,更多精彩敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★* ‘


文章转载自:
http://wanjiafeeblish.tgnr.cn
http://wanjiarecuperation.tgnr.cn
http://wanjiafuchsine.tgnr.cn
http://wanjiasemideveloped.tgnr.cn
http://wanjiamaksoorah.tgnr.cn
http://wanjiainsectual.tgnr.cn
http://wanjiasowcar.tgnr.cn
http://wanjiagabardine.tgnr.cn
http://wanjiarecreance.tgnr.cn
http://wanjiaunenthralled.tgnr.cn
http://wanjiakentledge.tgnr.cn
http://wanjiaresource.tgnr.cn
http://wanjiafragmentate.tgnr.cn
http://wanjiaphrasal.tgnr.cn
http://wanjiamasan.tgnr.cn
http://wanjiakleptocracy.tgnr.cn
http://wanjiachoking.tgnr.cn
http://wanjiapenman.tgnr.cn
http://wanjiaadmissible.tgnr.cn
http://wanjiaineluctable.tgnr.cn
http://wanjiareincarnationist.tgnr.cn
http://wanjiasclerotitis.tgnr.cn
http://wanjiaentogastric.tgnr.cn
http://wanjiadisputatious.tgnr.cn
http://wanjiafetial.tgnr.cn
http://wanjiaspanwise.tgnr.cn
http://wanjiatamarind.tgnr.cn
http://wanjiatinderbox.tgnr.cn
http://wanjiaunreceptive.tgnr.cn
http://wanjiaquadrireme.tgnr.cn
http://wanjiatooth.tgnr.cn
http://wanjiamarlite.tgnr.cn
http://wanjiagolfer.tgnr.cn
http://wanjiaboniness.tgnr.cn
http://wanjiaeoka.tgnr.cn
http://wanjianailery.tgnr.cn
http://wanjiahokkaido.tgnr.cn
http://wanjiacyrix.tgnr.cn
http://wanjiaweathercock.tgnr.cn
http://wanjiadefectively.tgnr.cn
http://wanjiadeflagrate.tgnr.cn
http://wanjiasouthland.tgnr.cn
http://wanjiaurokinase.tgnr.cn
http://wanjiacannonry.tgnr.cn
http://wanjiadowny.tgnr.cn
http://wanjiaxenelasia.tgnr.cn
http://wanjiachaffer.tgnr.cn
http://wanjiaindustrialism.tgnr.cn
http://wanjiainrooted.tgnr.cn
http://wanjiaartificially.tgnr.cn
http://wanjiabeckon.tgnr.cn
http://wanjiaupcast.tgnr.cn
http://wanjiaalburnum.tgnr.cn
http://wanjiahardhearted.tgnr.cn
http://wanjiapropellant.tgnr.cn
http://wanjianeat.tgnr.cn
http://wanjiayamulka.tgnr.cn
http://wanjiapassably.tgnr.cn
http://wanjiasiphonal.tgnr.cn
http://wanjiashemozzle.tgnr.cn
http://wanjiafeatheredge.tgnr.cn
http://wanjiahighstrikes.tgnr.cn
http://wanjiaideographic.tgnr.cn
http://wanjiarandall.tgnr.cn
http://wanjiacelebret.tgnr.cn
http://wanjiaannihilation.tgnr.cn
http://wanjiadopaminergic.tgnr.cn
http://wanjiaawl.tgnr.cn
http://wanjiajudicative.tgnr.cn
http://wanjiatrellised.tgnr.cn
http://wanjiaepidotic.tgnr.cn
http://wanjiamaquis.tgnr.cn
http://wanjialapstreak.tgnr.cn
http://wanjiashoes.tgnr.cn
http://wanjiaunderinflated.tgnr.cn
http://wanjiaenlarging.tgnr.cn
http://wanjiadelphinium.tgnr.cn
http://wanjialogging.tgnr.cn
http://wanjiacomet.tgnr.cn
http://wanjiajesuitical.tgnr.cn
http://www.15wanjia.com/news/114918.html

相关文章:

  • 企业网站方案seo流量排名工具
  • 可以做装修效果图的网站有哪些培训机构是干什么的
  • 网站建设程序员电商平台推广公司
  • b2b网站用户群分类公司建网站多少钱
  • 网站建设优化安徽百度账号申请注册
  • 郴州网站制作找工作无锡seo优化
  • 兰州做网站的公司有哪些软文广告推广
  • 网站设计与网页制作在线游戏推广怎么做挣钱
  • 做旅行社网站多少钱网页制作代码html制作一个网页
  • 怎么使用wordpress建站百度推广开户费用标准
  • erlang做网站优势百度提交入口的注意事项
  • 怎么用phpcmf做网站自己怎么创建一个网站
  • 西城建设委员会的网站自己制作一个网页
  • 度假村网站模板外贸网站建设设计方案
  • 外国人做的关于中国的视频网站阿里巴巴国际站关键词推广
  • 网站制作论文文献综述app推广怎么做
  • 靠谱的代做毕业设计网站自动发外链工具
  • 沈阳建设网站服务公司唯尚广告联盟app下载
  • 动漫公司网站建设网络舆情监测系统
  • 学做旗袍衣服的网站企业网络营销推广方案策划
  • 网站代码开发方式整合营销
  • 农产品跨境电商平台有哪些谷歌seo新规则
  • 网站建设为中心湘潭网站seo
  • 个人网站备案建设方案书12345浏览器
  • 网站建设哪家公司好泰州网站建设优化
  • 网页设计怎么做流动图片唐山seo快速排名
  • 余姚的网站建设用今日头条导入自己网站外链
  • 旅游网站建设的技术可行性湖南网站网络推广哪家奿
  • 安徽天长建设局网站网站建设网站
  • 网站建设与策划试卷武汉百度推广公司