当前位置: 首页> 游戏> 手游 > 商业设计要点_安卓app生成器_邯郸今日头条最新消息_阿里指数查询官网

商业设计要点_安卓app生成器_邯郸今日头条最新消息_阿里指数查询官网

时间:2025/7/11 8:43:03来源:https://blog.csdn.net/weixin_65346668/article/details/142868912 浏览次数:0次
商业设计要点_安卓app生成器_邯郸今日头条最新消息_阿里指数查询官网

目录

死锁

如何解决死锁问题?

线程生命周期

Thread.sleep()方法

Thread.yield()方法

thread.join()方法


死锁

在线程同步过程中,因为多线程争抢锁资源,所以有些线程会执行,有些线程会等待。

如果线程A和线程B分别需要 X和Y两个锁资源

恰好A获得了X资源,准备争抢Y , 而B获得了Y资源,准备争抢X

此时A和B就进入了一中死锁状态。

此时程序就会卡住

如何解决死锁问题?

  1. 从业务逻辑层面解决

  2. 从技术层面解决

    1. 可以使用lock锁 的 tryLock()方法

线程生命周期

在上图中可以看到,有一个中断线程的过程,中断线程的方式有很多

Thread.sleep()方法

  • Thread类的一个静态方法

  • 让当前正在执行的线程处于睡眠状态

  • 指定睡眠时间,时间过后,自动唤醒,唤醒后,线程进入就绪状态,准备争抢CPU

  • 睡眠期间,一旦被其他线程调用了当前线程的interrupt方法中断,会抛出异常

  • 如果线程抢占了一个对象锁,睡眠期间不会释放对象锁。

Thread.yield()方法

  • 让步,当前线程让出CPU,与其他线程重新争抢CPU

  • 当前让出cpu的线程也会参入争抢

thread.join()方法

  • 插队,当前线程调用指定线程对象的join方法,将指定线程加入当前线程的执行序列

  • 当指定线程执行完毕后,当前线程才会继续执行。(此时直接处于运行状态)

    通过底层原码可知,join方法会不挺的检测线程的存活状态

    当目标线程执行完毕后,自动销毁,不再存货

    当前线程一旦发现目标线程销毁,则继续执行自己的操作。在判断时一定已经获得cpu了

  • 最常用的就是通过join方法,实现确保所有的其他线程都执行完毕,当前线程再继续执行。

关键字:商业设计要点_安卓app生成器_邯郸今日头条最新消息_阿里指数查询官网

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: