网站大量收购独家精品文档,联系QQ:2885784924

第9章Java的多线程机制.PPTVIP

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
例9.4 优先级相同的线程 class SamePriority{ public static void main(String[] args){ new DemoA(长江).start(); new DemoA(黄河).start(); } } class DemoA extends Thread { private String name; public DemoA(String s){ super(s); this.name=s; } public void run(){ for(int i=0;i=4;i++){ System.out.print( +currentThread().getName()); yield(); } System.out.println(); } } 该程序的输出是: 长江 黄河 东海 东海 东海 东海 东海 长江 黄河 长江 黄河 长江 黄河 长江 ? ⑴Java线程的优先级是一个在1到10之间的整数。 ⑵未设定优先级的线程其优先级为缺省值5。 ⑶在类Thread中分别用类常量 MIN_PRIORITY、NORM_PRIORITY和MAX_PROIORITY表示1、5、10这3个数。 ⑷在程序中可利用方法setPriority( int newPriority)将当前线程的优先级指定为newPriority的值。 ⑸一个线程可以创建另一个线程,被创建的线程的优先级与创建者的相同。 ⑹Java的调度发式抢占式的,即Java保证优先级最高的线程线运行。 ⑺当一个线程运行结束或处于阻塞状态后,Java总是从就绪队列中挑选优先级最高的线程进入运行状态。 例9.5 运行优先级不同的线程 class TwoPriority{ public static void main(String[] args){ new DemoA(长江).start(); new DemoA(黄河).start(); DemoA da=new DemoA(东海); da.setPriority(Thread.MAX_PRIORITY); da.start(); } } class DemoA extends Thread { private String name; public DemoA(String s){ super(s); this.name=s; } public void run(){ for(int i=0;i=4;i++){ System.out.print( +currentThread().getName()); yield(); } System.out.println(); } } 该程序的输出是: 长江 黄河 东海 东海 东海 东海 东海 长江 黄河 长江 黄河 长江 黄河 长江 ? ⑴本程序各次运行的结果可能不一样,但优先级高的“东海”线程会较早地执行完。 ⑵多线程程序不保证输出的再现性。 ⑶语句setPriority(Thread.MAX_PRIORITY);将当前线程的优先级指定为最大值。 例9.7 线程同步运行 class ShareIntAble{ private int value; private boolean setAble=true; public synchronized void set(int val){ while(!setAble){ try{ wait(); }catch(InterruptedException ie){} } setAble=false; value=val; notify(); } public synchronized int get(){ while(setAble){ try{ wait(); }catch(InterruptedException ie){} } setAble=true; * * 第9章 Java的多线程机制 本章主要讲述了线程的概念,线程的创建,线程的管理。 例9.1用类Thread的子类创建线程 class CalculateThread extends Thread{ private String name; public CalculateThread(String nam

文档评论(0)

1234554321 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档