内容简介:Java多线程之线程中止
shop()
Java中提供了shop()方法来中断线程,但其过于暴力而被定义为过期方法。假如一条线程在修改一段数据时,且已经修改了一半,此时的你强行用shop()方法中断该线程后,数据处于一半修改过、一半未修改的状态,该数据就已经废了(且不会有任何提示)。除非你清楚在干什么,否则不要使用shop()。
Java中推荐使用中断:
public void Thread.interrupt() //中断线程
public boolean Thread.isInterrupted() //判断是否被中断
public static boolean Thread.interrupted() //判断是否被中断,且清除当前中断状态
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread() {
@Override
public void run () {
while (true) {
Thread.yield();
}
}
};
t1.start();
Thread.sleep(2000);
ti.interrupt();
}
在这里虽然调用了interrupt()方法,但该线程并不会停下。因为该方法只是设置了一个中断状态,但该线程并未对此中断状态做出反应。
以下代码进行了对中断状态的处理。
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread() {
@Override
public void run () {
while (true) {
if (Thread.currentThread().isInterrupted()){ //此方法返回中断状态,且不会清除该中断状态。
System.out.println("Interruted!");
breadk;
}
Thread.yield();
}
}
};
t1.start();
Thread.sleep(2000);
ti.interrupt();
}
但我们使用wait() 或者 sleep() 方法时要注意下:
首先得了解下Thread.sleep()函数:
public static native void sleep(long millis) throws InterruptedException
当该线程休眠时如果中断则会抛出该错误,此异常非运行时异常,必须捕获且处理。
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread() {
@Override
public void run () {
while (true) {
if (Thread.currentThread().isInterrupted()){
//此方法返回中断状态,且不会清除该中断状态
System.out.println("Interruted!");
break;
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
System.out.println("Interruted When Sleep");
// 设置中断状态
Thread.currentThread().interrupt();
}
Thread.yield();
}
}
};
t1.start();
Thread.sleep(2000);
t1.interrupt();
}
在catch语块中本可以进行中断退出,但我们没这么做,因为这样会破坏数据一致性和完整性(和直接使用shop()用异曲同工之妙)。所以我们在异常处理中必须重新设置中断状态(因为此时抛出异常后状态会被清除),让该线程完成工作后再退出。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 如何优雅地中止线程?
- Haskell程序中止与“循环”,但我认为它不应该
- python – django reg extend – 当前事务被中止,命令被忽略直到事务块结束
- java中线程安全,线程死锁,线程通信快速入门
- ObjC 多线程简析(一)-多线程简述和线程锁的基本应用
- Android 的线程和线程池
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
HTML5与CSS3权威指南(上册) (第3版)
陆凌牛 / 机械工业出版社 / 2015-9-1 / CNY 89.00
本书是HTML 5与CSS 3领域公认的标杆之作,被读者誉为“系统学习HTML 5与CSS 3的最佳著作”和“Web前端工程师案头必备图书之_”。 前两版累计印刷超过15次,网络书店评论超过8000条,98%以上的评论都是五星级的好评。不仅是HTML 5与CSS 3图书领域当之无愧的领头羊,而且在整个原创计算机图书领域是佼佼者。 第3版首先从技术的角度根据最新的HTML 5和CSS 3......一起来看看 《HTML5与CSS3权威指南(上册) (第3版)》 这本书的介绍吧!