天天看点

优雅的停止线程|学习笔记

开发者学堂课程【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 ;//停止线程

}