最简单也最容易理解得线程结束

前言

昨天刚刚接触多线程,但是一打开多线的常用的三种常用的创建方式就会发现,它们确实有停止的方式,但是后面有大大的标识——已过时
在这里插入图片描述
所以只有找其他的办法解决了,那么就不卖关子了,进入今天的主题——结束线程

一、结束线程的常见方式

1、自然退出:run()执行完之后自动退出,这种行为是可预测的。当然这也是最好得方式。
2、强制退出:传统方式是使用suspend()和resume()来暂停或者恢复线程,或者最后的选择使用stop()来结束线程。但是在实际中都不会使用这三个方式,因为它们操作线程时,根本不知道线程的内部状态,这样会导致不可预知的情况发生,所以不推荐使用!

二、结束线程的正确方式(代码演示)

代码如下(关闭方法):

public class EndThread implements Runnable{
	private boolean isRun = false; // 创建有个boolean类型的私有的isRun元素,初始值赋予false
	

	public EndThread(boolean isRun) {// 生成EndThread带参的构造函数
		this.isRun = isRun;
	}

	@Override
	public void run() { // 重写Runnable自带的run()方法
		int counter = 0; // 设置结束线程的条件
		while(isRun) { // 设置while循环方便后续测试滚动看效果
			counter++; // 自增
			System.out.println("counter"+counter);
			if(counter==10) { // 线程停止条件
				isRun = false; // 控制线程停止
			}
		}
	}
}

代码如下(测试):

public class Test03 {

	public static void main(String[] args) {
		EndThread endThread = new EndThread(true);// 创建一个新的EndThread对象的同时做启动线程的准备
		Thread thread = new Thread(endThread);
		thread.start();// 启动线程
	}
}

代码如下(输出):

counter1
counter2
counter3
counter4
counter5
counter6
counter7
counter8
counter9
counter10

总结

果然在通过条件判断哪里,线程就结束,如果没有条件结束,那么这个线程将一直持续下去,演变成一个死循环,嘿嘿,因为我写的就是一个死循环,这种线程的结束相对于哪三种强制结束的方法就温和得多,代码很简单,是为了直观的表述原理,期望指正哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值