java线程几种阻塞方法对比
发布日期:2021-10-09 15:35:02 浏览次数:1 分类:技术文章

本文共 866 字,大约阅读时间需要 2 分钟。

Java线程生命周期

在这里插入图片描述

Java中常用的几种阻塞方法

通过上图中的线程生命周期图可知,常用的几种阻塞方法主要有: Thread.sleep(), LockSupport.park(), Object.wait

阻塞方法对比

在这里插入图片描述

在这里插入图片描述

Object.wait()相关

方法 描述
Object.wait() 阻塞当前线程,同时释放锁,并等待另一个线程调用Object.notify()或者Object.notifyAll()
Object.wait(timeout) 阻塞当前线程,同时释放锁,并等待时间到或者另一个线程调用Object.notify()或者Object.notifyAll()
Object.notify() 从所有等待Object monitor的线程中选取一个线程唤醒并去抢占Object的monitor,如果抢占成功,则会有cpu调度的机会
Object.notifyAll() 唤醒所有等待Object monitor的线程同时所有唤醒线程重新去获取object的monitor,如果抢占成功,则会有cpu调度的机会

Thread.sleep()相关

Thread.sleep(timeout): 阻塞当前线程,同时不释放资源锁

LockSupport.park()相关

方法 描述
LockSupport.park() 阻塞线程,同时消耗1个许可,当另一个线程调用对当前线程的unpark()方法,才会唤醒
LockSupport.parkUntil(timeout) 阻塞线程,当timeout时间到或者另一个线程调用对当前线程的unpark()方法,才会唤醒等待或者cpu并继续执行后续代码
LockSupport.parkNanos(timeout) 阻塞线程,当timeout时间到或另一个线程调用当前线程的unpark()方法,才会唤醒等待或者cpu并继续执行后续代码
LockSupport.unpark(Thread) 调用某个线程的unpark方法,则指定线程会唤醒park()线程

转载地址:https://blog.csdn.net/qinwuxian19891211/article/details/105961366 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:maven setting.xml详解
下一篇:maven使用assembly打包zip文件

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年03月27日 00时49分35秒