b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

java版本 停止Java线程,小心interrupt()方法

电脑杂谈  发布时间:2018-02-09 15:33:02  来源:网络整理

java最新版本是多少_java版本_对应java版本

程序是很简易的。然而,在编程人员面前,多线程呈现出了一组新的难题,如果没有被恰当的解决,将导致意外的行为以及细微的、难以发现的错误。

在本篇文章中,我们针对这些难题之一:如何中断一个正在运行的线程。??

背景??

?????? 中断(Interrupt)一个线程意味着在该线程完成任务之前停止其正在进行的一切,有效地中止其当前的操作。线程是死亡、还是等待新的任务或是继续运行至下一步,就取决于这个程序。虽然初次看来它可能显得简单,但是,你必须进行一些预警以实现期望的结果。你最好还是牢记以下的几点告诫。??

?????? 首先,忘掉Thread.stop方法。虽然它确实停止了一个正在运行的线程,然而,这种方法是不安全也是不受提倡的,这意味着,在未来的JAVA版本中,它将不复存在。??

?????? 一些轻率的家伙可能被另一种方法Thread.interrupt所迷惑。尽管,其名称似乎在暗示着什么,然而,这种方法并不会中断一个正在运行的线程(待会将进一步说明),正如Listing A中描述的那样。它创建了一个线程,并且试图使用Thread.interrupt方法停止该线程。Thread.sleep()方法的调用,为线程的初始化和中止提供了充裕的时间。线程本身并不参与任何有用的操作。??

Listing A??

class??Example1??extends??Thread??{????

????????????????????????boolean??stop=false;????

????????????????????????public??static??void??main(??String??args[]??)??throws??Exception??{????

????????????????????????Example1??thread??=??new??Example1();????

????????????????????????System.out.println(??"Starting??thread..."??);????

????????????????????????thread.start();????

????????????????????????Thread.sleep(??3000??);????

????????????????????????System.out.println(??"Interrupting??thread..."??);????

????????????????????????thread.interrupt();????

????????????????????????Thread.sleep(??3000??);????

????????????????????????System.out.println("Stopping??application..."??);????

????????????????????????//System.exit(0);????

????????????????????????}????

????????????????????????public??void??run()??{????

????????????????????????while(!stop){????

????????????????????????System.out.println(??"Thread??is??running..."??);????

????????????????????????long??time??=??System.currentTimeMillis();????


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/sanxing/article-69021-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...