java线程学习3——线程的停止

本文详细介绍了Java线程控制中的三种方法:stop方法、interrupt方法和flag控制,包括它们的工作原理、优缺点及实际应用。通过示例代码演示如何在不同场景下合理选择线程控制方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法一 stop方法

Thread t = new Thread(new MyThread());

t.stop();

非常不友好,该方法已经被废弃。使用该方法,线程直接停止,可能很多资源没有关闭,还有可能造成死锁。

方法二 interrupt方法

public class SleepThread implements Runnable
{
/**
* 线程运行时执行的方法
*/
public void run()
{
try
{
// 该线程进入阻塞状态5秒
Thread.sleep(5000);
for (int i = 0; i < 500; i++)
{
System.out.println(Thread.currentThread().getName() + i);
}
}
catch (InterruptedException e)
{
//
若调用该线程的interrupt方法,会报该异常,真实程序中可以关闭一些资源
e.printStackTrace();
}
}
}

package cn.xy.Thread;

public class SleepTest
{
public static void main(String[] args)
{
SleepThread tr = new SleepThread();
Thread t = new Thread(tr);
t.start();
for (int i = 0; i < 500; i++)
{
System.out.println(Thread.currentThread().getName() + i);
}

t.interrupt();
}
}

若调用该线程的interrupt方法,会报InterruptedException异常,真实程序中可以捕捉该异常并关闭一些资源。

方法三 flag

public class StopThread implements Runnable
{
private boolean flag = true;

public void run()
{
while (flag)
{
// flag变为false后可能会完成该线程的最后一次输出
System.out.println(Thread.currentThread().getName());
}
}

public void shutDown()
{
System.out.println("我被shutdown了!");
flag = false;
}
}

public class StopTest
{
public static void main(String[] args)
{
StopThread st = new StopThread();
Thread t = new Thread(st);
t.start();
for (int i = 0; i < 10; i++)
{
System.out.println(Thread.currentThread().getName() + i);
}
System.out.println("主线程结束!");
st.shutDown();
}
}

可以很灵活控制线程的结束,shutDown中可以关闭资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值