开发者学堂课程【Java 高级编程:优雅的停止线程】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/20/detail/296
优雅的停止线程
1. 在多线程操作之中如果要启动多线程肯定使用的是 Thread 类中的 start() 方法,而如果对于多线程需要进行停止处理,Thread 类原本提供有 stop() 方法。
2. 但是对于这些方法从 JDK1.2 版本开始就已经将其废除了,而且一直到现在也不再建议出现在你的代码中.而除了 stop() 之外还有几个方法也被禁用。
l 停止多线程: public void stop()
l 销毁多线程: public void destroy()
l 挂起线程: public final void suspend()
暂停执行
l 恢复挂起的线程执行: public final void resume()
2.之所以废除掉这些方法,主要的原因是因为这些方法有可能导致线程的死锁。所以从 JDK1.2 开始就都不建议使用,如果要想实现线程的停止需要通过一种柔和的方式来进行。
范例:实现线程柔和的停止.
package cn.mldn.demo;
public class ThreadDemo
{
public static boolean flag=true;
public static void main(String[] args) throws Exception
{
new Thread(() ->
{
1ong
num=0;
while(flag)
{
try
{
Thread.sleep(50);
}
catch (InterruptedException e)
{
e.printStackTrace();
System.out.println(Thread.currentThread().getName() +"
正在运行
num = " + num++);
},"执行线程").start();
Thread.sleep(200);
//运行200毫秒
flag = false ;//停止线程
}