线程的挂起与恢复案例详解

本文详细介绍了线程的挂起与恢复,包括为何要挂起线程以避免资源浪费,以及如何使用wait、notify方法进行线程控制。文中还提醒开发者避免使用已废弃的suspend和resume方法,因为可能导致死锁,并提供了死锁和wait、notify的案例分析。适合在等待资源时挂起线程,以优化CPU时间片的使用。
摘要由CSDN通过智能技术生成
什么是挂起线程?

线程的挂起操作实质上就是使线程进入“非可执行”状态下,在这个状态下CPU不会分给线程时间片,进入这个状态可以用来暂停一个线程的运行。在线程挂起后,可以通过重新唤唤醒线程来使之回服运行

为什么要挂起线程?

CPU分配的时间片非常短、同时也非常珍贵。避免资源的浪费

如何挂起线程?

被废弃的方法thread.supend()该方法不会释放线程所占用的资源,如果使用该方法将某个线程挂起,则可能会使其它等待资源的线程锁死
thread.resume()方法本身并无问题,但是不能独立于supend()方法存在
可以使用方法wait()暂停执行、放弃已经获得的锁、进入等待状态
notify():随机唤醒一个等待锁的线程
notifyAll():唤醒所有等待锁的线程,自行抢占cpu资源

supend和resume方法演示

实际开发中不要使用这两个方法,源码中注解@Deprecated表示已经被废弃了 问题不会释放线程所占资源,可能出现死锁

/**
 * Supend方法挂起操作Demo
 */
public class SupendDemo implements Runnable{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+"执行run方法,准备调用supend方法");
        //挂起线程
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值