专栏首页人生得意须尽欢interrupt+抛出异常测试
原创

interrupt+抛出异常测试

interrupt+抛出异常(推荐)

public class MyThread extends Thread {
	@Override
	public void run() {
		try {
			for (int i = 0; i < 500000; i++) {
				if (this.interrupted()) {
					System.out.println("已经是停止状态了!我要退出了!");
					throw new InterruptedException();
				}
				System.out.println("i=" + (i + 1));
			}
			System.out.println("我在for下面");
		} catch (InterruptedException e) {
			System.out.println("进MyThread.java类run方法中的catch了!");
			e.printStackTrace();
		}
	}
}
public class Run {
	public static void main(String[] args) {
		try {
			MyThread thread = new MyThread();
			thread.start();
			Thread.sleep(2000);
			thread.interrupt();
		} catch (InterruptedException e) {
			System.out.println("main catch");
			e.printStackTrace();
		}
		System.out.println("end!");
	}
}

输出:

...
i=256699
i=256700
i=256701
i=256702
end!
已经是停止状态了!我要退出了!
进MyThread.java类run方法中的catch了!
java.lang.InterruptedException
	at exthread.MyThread.run(MyThread.java:11)

  建议使用“抛异常”的方法来实现线程的停止,因为在catch块中可以对异常的信息进行相关的处理,而且使用异常流能更好、更方便的控制程序的运行流程,不至于代码中出现很多个return;污染代码。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • .net remoting 抛出异常

    所有在远程软件运行的类,如果需要传输到本地,都需要继承 MarshalByRefObject 或其他可以序列化的类。

    林德熙
  • dotnet remoting 抛出异常

    所有在远程软件运行的类,如果需要传输到本地,都需要继承 MarshalByRefObject 或其他可以序列化的类。

    林德熙
  • idea抛出异常:org.apache.shiro.authc.AuthenticationException

    继续在ubuntu下折腾,终于将web项目的所有的东西配置好了,然后运行项目,满怀期待的心情登录系统的时候,突然出现了这个bug,吓得我差点从椅子上跳起来,这两...

    roobtyan
  • 应该抛出什么异常?不应该抛出什么异常?(.NET/C#)

    2018-02-04 13:25

    walterlv
  • 深入分析Java线程中断机制

    在平时的开发过程中,相信都会使用到多线程,在使用多线程时,大家也会遇到各种各样的问题,今天我们就来说说一个多线程的问题——线程中断。在java中启动线程非常容易...

    哲洛不闹
  • Java停止线程的四种方法

    线程调用interrupt()方法后,在线程的run方法中判断当前对象的interrupted()状态,如果是中断状态则抛出异常,达到中断线程的效果。 ...

    凡人飞
  • python3-抛出、捕获异常

    py3study
  • 为什么Synchronized不可中断?

    为什么Synchronized不可中断?首先中断操作是Thread类调用interrupt方法实现的。基本上所有人都说Synchronized后线程不可中断,百...

    蒋老湿
  • Java-抛出异常、自定义异常类

    众所周知,当程序运行过程中,如果遇到了错误(比如数组下标越界,空指针等)程序就会自动终止,但这种错误一般是偶然的,可能是用户输入不呵呵程序编写者的意图导致,而不...

    圆号本昊
  • Java多线程的中断机制

    这篇文章主要记录使用 interrupt() 方法中断线程,以及如何对InterruptedException进行处理。感觉对InterruptedExcept...

    Vincent-yuan
  • Java 如何抛出异常、自定义异常

    1、定义 : 一个方法不处理这个异常,而是调用层次向上传递,谁调用这个方法,这个异常就由谁来处理。

    Java编程指南
  • 异常1.异常简介2.捕获异常3.异常的传递4.抛出自定义的异常 5.异常处理中抛出异常

    打开一个不存在的文件123.txt,当找不到123.txt文件时,就会抛出给我们一个IOError类型的错误,No such file or directory...

    Python攻城狮
  • 1.7停止线程

    线程停止:在线程处理完任务之前,停掉正在做的操作,也就是放弃当前操作。 在java中有三种方法可以实现线程的停止: 使用退出标志,使线程正常退出,也就是当run...

    用户1134788
  • Java 捕获和抛出异常

    Java中把非正常情况分为两种:异常(Exception)和错误(Error),其中Error错误一般是指与虚拟机相关的问题,这种错误无法恢复或不可能捕获,而对...

    用户7886150
  • 学多线程的看过来,带你学习多线程中断机制

    当我们点击某个杀毒软件的取消按钮来停止查杀病毒时,当我们在控制台敲入quit命令以结束某个后台服务时……都需要通过一个线程去取消另一个线程正在执行的任务。Jav...

    好好学java
  • java中断机制zz

    一般的代码中,尤其是作为一个基础类库时,绝不应当吞掉中断,即捕获到InterruptedException后在catch里什么也不做,清除中断状态后又不重设...

    Dylan Liu
  • 线程应用 - 中断interrupt详解

    有些初学者对中断的概念可能会有些许小误会,比如线程调用Thread.interrupt()方法,就认为线程会被中断,停止执行,其实不是这样的,让我们来看...

    虞大大
  • 并发编程之线程中断interrupt

    线程中断可能在平时的开发中我们用的不多,但是我相信大部分都见过InterruptedException,因为不管我们在调用object.wait()还是Thre...

    全栈程序员站长
  • 为什么说volatile+interrupt是停止线程最优雅的姿势?

    调用stop方法,会让正在运行的线程直接中止,有可能会让一些清理性的工作得不到完成。并且stop已经被标记为废弃的方法,不建议使用。

    Java识堂

扫码关注云+社区

领取腾讯云代金券