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

简介: 快速学习 优雅的停止线程

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

}

相关文章
|
5月前
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
99 0
|
2月前
|
调度
多线程学习笔记
这篇文章是多线程学习笔记,涵盖了线程与进程的概念、多线程实现方式、线程状态、线程同步与不安全示例、死锁问题以及生产者与消费者问题等多线程编程的关键知识点。
多线程学习笔记
|
5月前
|
NoSQL 网络协议 关系型数据库
redis-学习笔记(redis 单线程模型)
redis-学习笔记(redis 单线程模型)
50 3
|
5月前
|
安全 Java 编译器
多线程 (下) - 学习笔记2
多线程 (下) - 学习笔记
41 1
|
5月前
|
存储 算法 Java
多线程 (下) - 学习笔记1
多线程 (下) - 学习笔记
42 1
|
5月前
|
设计模式 安全 NoSQL
多线程 (上) - 学习笔记2
多线程 (上) - 学习笔记
43 1
|
5月前
|
Java 数据库连接 程序员
【后台开发】TinyWebser学习笔记(2)线程池、数据库连接池
【后台开发】TinyWebser学习笔记(2)线程池、数据库连接池
56 4
|
5月前
多线程学习笔记(一)
创建线程有3种方式:继承Thread类、实现Runnable接口或Callable接口。继承Thread类时,重写run()方法并调用start()启动线程。实现Runnable接口时,实现run()方法,通过Thread的target创建线程对象并用start()启动。
28 1
|
5月前
|
Java API 调度
多线程 (上) - 学习笔记1
多线程 (上) - 学习笔记
36 0
|
5月前
|
Java C++
多线程学习笔记(二)
1. 子线程先执行:启动子线程后立即调用`join()`,主线程会等待子线程完成。 `suspend()`方法。 3. `synchronized` vs `Lock`:前者是关键字,后者是接口;前者可用在代码块和方法,后者在代码中显式;前者自动释放锁,后者需`finally`释放;前者无超时/中断控制,后者可设定;前者非公平,后者可公平/不公平,且支持读写锁。 4. `synchronized`底层实现:基于 Monitor 模型,JVM层面的锁定机制,通过 monitors 和 monitorenter/monitorexit 指令实现。
23 0