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

课件:Java八线程.ppt

  1. 1、本文档共105页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
catch(Exception e){} } } public synchronized void hangUP() throws InterruptedException{ wait(); } public synchronized void restart(){ notifyAll(); } } 8.10 线程联合 一个线程A在占有CPU资源期间,可以让其它线程调用join()和本线程联合, 如: B.join(); 我们称A在运行期间联合了B。如果线程A在占有CPU资源期间一旦联合B线程,那么A线程将立刻中断执行,一直等到它联合的线程B执行完毕,A线程再重新排队等待CPU资源,以便恢复执行。如果A准备联合的B线程已经结束,那么B.join()不会产生任何效果。 在下面的例子13中,一个线程在运行期间联合了另外一个线程。 返回 public class Example8_13{ public static void main(String args[ ]){ JoinThread a=new JoinThread (); a.threadA.start(); } } class JoinThread implements Runnable{ Thread threadA,threadB; String content[ ]={今天晚上,,大家不要,回去的太早,,还有工作,需要大家做!}; JoinThread(){ threadA=new Thread(this); threadB=new Thread(this); threadB.setName(经理); } public void run(){ if(Thread.currentThread()==threadA){ System.out.println(我等+threadB.getName()+说完再说话); threadB.start(); while(threadB.isAlive()==false){} try{ threadB.join(); //线程threadA开始等待threadB结束 } catch(InterruptedException e){} System.out.printf(\n我开始说话:\我明白你的意思了,谢谢\); } else if(Thread.currentThread()==threadB){ System.out.println(threadB.getName()+说:); for(int i=0;icontent.length;i++){ System.out.print(content[i]) ; try { threadB.sleep(1000); } catch(InterruptedException e){} } } } } 8.10 守护线程 一个线程调用 void setDaemon(boolean on) 方法可以将自己设置成一个守护(Daemon)线程,例如: thread.setDaemon(true); 线程默认是非守护线程,非守护线程也称作用户(user)线程。 当程序中的所有用户线程都已结束运行时,即使守护线程的run方法中还有需要执行的语句,守护线程也立刻结束运行。一般地,用守护线程做一些不是很严格的工作,线程的随时结束不会产生什么不良的后果。一个线程必须在运行之前设置自己是否是守护线程。 下面的例子14中有一个守护线程 返回 class Daemon implements Runnable{ Thread A,B; Daemon(){ A=new Thread(this); B=new Thread(this); }

文档评论(0)

iuad + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档