java多线程编程实例有哪些状态,主要流转流程

1943人阅读
java语言(5)
Java线程内部流转过程
Java线程内部的状态流转过程是什么样子的,下图给出了一个详细的图例说明。
(1) Thread t = new Tread(); 当执行到此段代码时,jvm生成一个新的线程对象,此时该线程处于初始状态。
(2) 当线程处于可运行状态时,该线程未必就能得到立即执行,这取决于该线程是否获得了cpu的运行时间片。当获得了时间片,该线程得到执行,处于运行状态。
(3) 处于运行状态的线程最理想的情况是run()方法运行结束,或者抛出异常,整个线程结束。实际常常发生的情况是线程的执行过程会进入阻塞或者等待队列中去。
(4)当线程处于运行状态时,有4种状态可以流转:(1)结束(2)可运行(3)阻塞(4)进入等待池。详见图上标注。这里需要搞明白yield()、sleep()、wait()这些方法的含义。
yield()、sleep()的区别
这两者的都是使得当前线程暂停运行,且都不会释放锁,两者都会在进入对应状态结束后重新执行。区别在于yield放弃当前执行时间,此时同优先级别的线程(非依赖当前锁的线程)可能会得到执行;而sleep则可以让低于自己优先级的线程(非依赖当前锁的线程)得到执行。yield的内部逻辑是:先检测是否有相同优先级别的线程处于可运行状态,如果有让出cup使用权,否则当前线程继续执行。所以yield的线程可能会从可运行状态立即回到运行状态。
两个重要的概念
对象myObject已经被某个线程A持有,那么当其他的线程B/C/D等想要来调用myObject的某个加了synchronized的修饰符的方法或者方法块内部有synchronized,此时线程B/C/D就进入了myObject的锁池,这里的池和线程池是一样的概念。
首选需要了解下java和线程有关的wait和notify,以及notifyAll()方法的含义。wait、notify(),notifyAll()都是Object类的方法,而不是线程的方法,这么做的目的便于线程控制,因为一个线程可能会涉及到多个锁,把锁设置为对象的属性,更易于控制。
当线程A获得了myObject的锁后,此时如果调用wait()方法,则线程A会释放掉该锁,此时线程A进入myObject的等待池。注意调用wait方法一定是在synchronized方法中的,因为前提是线程获得了myObject对象的锁。
线程B/C/D此时会进行锁的争夺,当线程B获得了锁后,并调用notify(),此时线程A会会进入锁池,当前锁池中又线程A/C/D三个线程,至于是哪个来获得锁,由操作系统的调度算法决定。
wait()、notify()、notifyAll()主要用于多个线程需要相互交互相互依赖的场景,比如生产者消费者,此时锁对象一般是队列。
所以等待池是当线程主动释放掉锁时会进入一个等待状态的集合。JAVA多线程设计模式的图书目录_百度知道
JAVA多线程设计模式的图书目录
我有更好的答案
//a.jpg" esrc="http.hiphotos.baidu.com/zhidao/wh%3D600%2C800/sign=abb00dc3d3bfae6cbddfcccade4954.hiphotos.baidu.com/zhidao/wh%3D450%2C600/sign=7bf2435cfe407fda5fd75/8cb1cbddfcccade4954、大量进行处理评量标准的总结重点回顾练习问题第1章 Single Threaded Execution——能通过这座桥的、notifyAll是Object类的方法线程的状态移转跟线程有关的其他话题重点回顾练习问题Introduction 2 多线程程序的评量标准多线程程序的评量标准安全性——不损坏对象生存性——进行必要的处理复用性——可再利用类性能——能快速.com/zhidao/pic/item/8cb1cbddfcccade4954.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http.baidu,去睡觉吧第11章 Thread-Specific Storage——每个线程的保管箱第12章 Active Object——接受异步消息的主动对象总结 多线程程序设计的模式语言附录A 练习问题的解答附录B Java的内存模型附录C Java线程的优先级附录D 线程相关的主要API附录E 参考文献<a href="http://a.hiphotos,你来用第6章 Read-Write Lock——大家想看就看吧,不过看的时候不能写喔第7章 read-Per-Message——这个工作交给你了第8章 Worker Thread——等到工作来,来了就工作第9章 Future——先给您这张提货单第10章 Two-Phase Termination——快把玩具收拾好,只有一个人第2章 Immutable——想破坏它也没办法第3章 Guarded Suspension——要等到我准备好喔第4章 Balking——不需要的话,就算了吧第5章 Producer-Consumer——我来做漫谈UMLUML类图类和层次结构的关系接口与实现聚合访问控制类间的关联性顺序图处理流程和对象间的协调时序图Introduction 1 Java语言的线程Java语言的线程何谓线程明为追踪处理流程,实则追踪线程单线程程序多线程程序Thread类的run方法和start方法线程的启动线程的启动(1)——利用Thread类的子类线程的启动(2)——利用Runnable接口线程的暂时停止线程的共享互斥synchronized方法synchronized阻挡线程的协调wait set——线程的休息室wait方法——把线程放入wait setnotify方法——从wait set拿出线程notifyAll方法——从wait set拿出所有线程wait、notify://a
为您推荐:
其他类似问题
您可能关注的内容
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。java多线程都有几种方式实现??_百度知道
该问题可能描述不清,建议你
java多线程都有几种方式实现??
我有更好的答案
有三种: (1)继承Thread类,重写run函数
class xx extends Thread{
public void run(){
Thread.sleep(1000) //线程休眠1000毫秒,sleep使线程进入Block状态,并释放资源
开启线程:
对象.start() //启动线程,run函数运行 (2)实现Runnable接口,重写run函数
开启线程:
Thread t = new Thread(对象) //创建线程对象
t.start() (3)实现Callable接口,重写call函数
Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。
Callable和Runnable有几点不同:
①Callable规定的方法是call(),而Runnable规定的方法是run().
②Callable的任务执行后可返回值,而Runnable的任务是不能返回值的
③call()方法可抛出异常,而run()方法是不能抛出异常的。
④运行Callable任务可拿到一个Future对象,Future表示异步计算的结果。它提供了检查计算是否完成的方法,以等
待计算的完成,并检索计算的结果.通过Future对象可了解任务执行情况,可取消任务的执行,还可获取任务执行的结果
采纳率:48%
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有两种,分别是synchronized,wait与notify
为您推荐:
其他类似问题
您可能关注的内容
多线程 java的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。&&&&图解Java多线程设计模式
自营订单满49元(含)免运费
不足金额订单收取运费5元起
邀请好友参加吧
版 次:1页 数:字 数:印刷时间:日开 本:16开纸 张:胶版纸包 装:平装-胶订是否套装:否国际标准书号ISBN:9丛书名:图灵程序设计丛书所属分类:&&&
下载免费当当读书APP
品味海量优质电子书,尊享优雅的阅读体验,只差手机下载一个当当读书APP
本商品暂无详情。
当当价:为商品的销售价,具体的成交价可能因会员使用优惠券、积分等发生变化,最终以订单结算页价格为准。
划线价:划线价格可能是图书封底定价、商品吊牌价、品牌专柜价或由品牌供应商提供的正品零售价(如厂商指导价、建议零售价等)或该商品曾经展示过的销售价等,由于地区、时间的差异化和市场行情波动,商品吊牌价、品牌专柜价等可能会与您购物时展示的不一致,该价格仅供您参考。
折扣:折扣指在划线价(图书定价、商品吊牌价、品牌专柜价、厂商指导价等)某一价格基础上计算出的优惠比例或优惠金额。如有疑问,您可在购买前联系客服咨询。
异常问题:如您发现活动商品销售价或促销信息有异常,请立即联系我们补正,以便您能顺利购物。
当当购物客户端手机端1元秒
当当读书客户端万本电子书免费读《图解Java多线程设计模式》(结城浩)【摘要 书评 试读】- 京东图书
京 东 价:
[定价:¥]
PLUS会员专享价
您购买此商品可享受专属价
增值业务:
重&#x3000;&#x3000;量:
搭配赠品:
服务支持:
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
图解Java多线程设计模式
商品介绍加载中...
扫一扫,精彩好书免费看
京东商城向您保证所售商品均为正品行货,京东自营商品开具机打发票或电子发票。
凭质保证书及京东商城发票,可享受全国联保服务(奢侈品、钟表除外;奢侈品、钟表由京东联系保修,享受法定三包售后服务),与您亲临商场选购的商品享受相同的质量保证。京东商城还为您提供具有竞争力的商品价格和,请您放心购买!
注:因厂家会在没有任何提前通知的情况下更改产品包装、产地或者一些附件,本司不能确保客户收到的货物与商城图片、产地、附件说明完全一致。只能确保为原厂正货!并且保证与当时市场上同样主流新品一致。若本商城没有及时更新,请大家谅解!
权利声明:京东上的所有商品信息、客户评价、商品咨询、网友讨论等内容,是京东重要的经营资源,未经许可,禁止非法转载使用。
注:本站商品信息均来自于合作方,其真实性、准确性和合法性由信息拥有者(合作方)负责。本站不提供任何保证,并不承担任何法律责任。
印刷版次不同,印刷时间和版次以实物为准。
价格说明:
京东价:京东价为商品的销售价,是您最终决定是否购买商品的依据。
划线价:商品展示的划横线价格为参考价,并非原价,该价格可能是品牌专柜标价、商品吊牌价或由品牌供应商提供的正品零售价(如厂商指导价、建议零售价等)或该商品在京东平台上曾经展示过的销售价;由于地区、时间的差异性和市场行情波动,品牌专柜标价、商品吊牌价等可能会与您购物时展示的不一致,该价格仅供您参考。
折扣:如无特殊说明,折扣指销售商在原价、或划线价(如品牌专柜标价、商品吊牌价、厂商指导价、厂商建议零售价)等某一价格基础上计算出的优惠比例或优惠金额;如有疑问,您可在购买前联系销售商进行咨询。
异常问题:商品促销信息以商品详情页“促销”栏中的信息为准;商品的具体售价以订单结算页价格为准;如您发现活动商品售价或促销信息有异常,建议购买前先联系销售商咨询。
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
加载中,请稍候...
浏览了该商品的用户还浏览了
加载中,请稍候...
七日畅销榜
新书热卖榜
iframe(src='//www.googletagmanager.com/ns.html?id=GTM-T947SH', height='0', width='0', style='display: visibility:')

我要回帖

更多关于 java多线程的状态 的文章

 

随机推荐