Java 线程如何终止.docVIP

  1. 1、本文档共16页,可阅读全部内容。
  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文档。上传文档
查看更多
Java 线程如何终止

如何终止java线程 分类: java 2013-09-16 19:51 600人阅读 评论(0) 收藏 举报 java线程终止 目录(?)[+] 如何停止JAVA线程 简介 建议使用的方法 当线程处于非运行Run状态 阻塞的IO 参考资料 处于运行状态的线程停止 即将或正在处于非运行态的线程停止 处于可中断等待线程的停止 处于IO阻塞状态线程的停止 处于大数据IO读写中的线程停止 在线程运行前停止线程 参考资料 ? ?终止线程的三种方法? ??? 有三种方法可以使终止线程。? ??? 1.? 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。? ??? 2.? 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。? ??? 3.? 使用interrupt方法中断线程。? 1. 使用退出标志终止线程? ??? 当run方法执行完后,线程就会退出。但有时run方法是永远不会结束的。如在服务端程序中使用线程进行监听客户端请求,或是其他的需要循环处理的任务。在这种情况下,一般是将这些任务放在一个循环中,如while循环。如果想让循环永远运行下去,可以使用while(true){……}来处理。但要想使while循环在某一特定条件下退出,最直接的方法就是设一个boolean类型的标志,并通过设置这个标志为true或false来控制while循环是否退出。下面给出了一个利用退出标志终止线程的例子。? package chapter2;? public class ThreadFlag extends Thread? {? ??? public volatile boolean exit = false;? ??? public void run()? ??? {? ??????? while (!exit);? ??? }? ??? public static void main(String[] args) throws Exception? ??? {? ??????? ThreadFlag thread = new ThreadFlag();? ??????? thread.start();? ??????? sleep(5000); // 主线程延迟5秒? ??????? thread.exit = true;? // 终止线程thread? ??????? thread.join();? ??????? System.out.println(线程退出!);? ??? }? }? ??? 在上面代码中定义了一个退出标志exit,当exit为true时,while循环退出,exit的默认值为false.在定义exit时,使用了一个Java关键字volatile,这个关键字的目的是使exit同步,也就是说在同一时刻只能由一个线程来修改exit的值,? ??? 2. 使用stop方法终止线程? ??? 使用stop方法可以强行终止正在运行或挂起的线程。我们可以使用如下的代码来终止线程:? thread.stop();? ??? 虽然使用上面的代码可以终止线程,但使用stop方法是很危险的,就象突然关闭计算机电源,而不是按正常程序关机一样,可能会产生不可预料的结果,因此,并不推荐使用stop方法来终止线程。? ??? 3. 使用interrupt方法终止线程? ??? 使用interrupt方法来终端线程可分为两种情况:? ??? (1)线程处于阻塞状态,如使用了sleep方法。? ??? (2)使用while(!isInterrupted()){……}来判断线程是否被中断。? ??? 在第一种情况下使用interrupt方法,sleep方法将抛出一个InterruptedException例外,而在第二种情况下线程将直接退出。下面的代码演示了在第一种情况下使用interrupt方法。? package chapter2;? public class ThreadInterrupt extends Thread? {? ??? public void run()? ??? {? ??????? try? ??????? {? ??????????? sleep(50000);? // 延迟50秒? ??????? }? ??????? catch (InterruptedException e)? ??????? {? ??????????? System.out.println(e.getMessage());? ??????? }? ??? }? ??? public static void main

文档评论(0)

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

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

1亿VIP精品文档

相关文档