线程基础之线程安全停止

stop() ;

这个 thread.stop();方法,官方不推荐使用,因为难以控制,stop()会使线程立即停止,所以没有办法控制,线程中的数据的变化。此方法已被弃用,在对线程内数据控制没有把握的时候禁止使用。

interpret()

interpret()方法实际上只是给当前线程加了一个停止的标识,至于什么时候停止线程完全有我们自己去控制比较灵活。
在讲述interpret()之前,先带大家了解一下另外两个api:
interpreted();// 静态方法 ,注意判断的是当前正在运行的线程停止的标识,其二,对停止标识,调用后会擦除。
isInterpreted();//判断的是当时线程的停止的标识

举例说明:
public static void main(String[] args) {

	/**
	 *第一种方法
	 */
	Thread thread = new Thread(new ThreadGroup("alibaba"), () -> {
		for (int i = 0; i < 100; i++) {
			try {
				TimeUnit.SECONDS.sleep(1000);
			} catch (InterruptedException e) {
				break;// 当线程处于waiting或者 timed_waiting状态时,执行interpret()会抛 InterruptedException
						// 因此我们可以在抛异常的时候,停止线程
			}
			System.out.println("----" + i);
		}

	}, "alibaba");
	thread.start();
	thread.interrupt();

	/**
	 *第二种方法
	 */
	Thread thread2 = new Thread(new ThreadGroup("alibaba"), () -> {
		for (int i = 0; i < 100; i++) {
			System.out.println("----" + i);
			if (Thread.currentThread().isInterrupted()) { // 使用isInterrupted()进行判断停止标识
				break;
			}
		}
	}, "alibaba");
	thread2.start();
	thread2.interrupt();
	
	/**
	 *第三种方法
	 */
	Thread thread3 = new Thread(new ThreadGroup("alibaba"), () -> {
		for (int i = 0; i < 100; i++) {
			System.out.println("----" + i);
			if (Thread.currentThread().interrupted()) { // 使用interrupted()进行判断停止标识
				break;
			}
		}
	}, "alibaba");
	thread3.start();
	thread3.interrupt();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值