首页 > 其他分享 >sleep(), wait(), join(), yield()的区别

sleep(), wait(), join(), yield()的区别

时间:2023-01-30 22:45:21浏览次数:35  
标签:锁池 join yield sleep 线程 等待 CPU wait

  • 锁池
    所有需要竞争同步锁的线程都会放在锁池当中,比如某个对象的同步锁被其中一个线程得到,则其它线程需要在锁池中等待,当前面的线程释放掉同步锁后锁池中的线程去竞争同步锁,得到锁的线程进入就绪队列等待CPU资源分配。
  • 等待池
    当调用wait()方法后,线程会放到等待池中,等待池中的线程不会去竞争同步锁。只有调用了notify()或notifyAll()后等待池中的线程才会开始竞争同步锁,notify()是随机从等待池选出一个线程放到锁池,而notifyAll()是将等待池中的所有线程放到锁池中。
  1. sleep是Thread类的静态本地方法,wait是Object类的本地方法。
  2. sleep方法不会释放lock,但是wait会释放,而且会加入到等待队列中。
    sleep()就是把CPU的执行资格和执行权释放出去,不再运行此线程,定时时间结束再取回cpu资源,参与cpu调度。如果sleep()时该线程有锁,sleep时不会释放这个锁,而是把锁带着进入冻结状态,也就是说其它需要这个锁的线程根本获取不到这个锁,则程序无法执行。
    如果在睡眠期间其他线程调用了这个线程的interrupt方法,那么这个线程也会抛出interruptexception异常返回,这点和wait是一样的。
  3. sleep不需要被唤醒(休眠之后退出阻塞),但是wait需要(不指定时间需要被别人中断)
  4. join()执行后线程进入阻塞状态。例如在A线程中调用B线程的join()方法,则A线程就会进入阻塞队列,直到B线程执行结束或中断。
  5. yield()方法执行后线程直接进入就绪状态,马上释放了CPU的执行权,但依然保留了CPU的执行资格,所以有可能下次CPU进行线程调度这个线程还有获取到CPU执行权继续执行。

标签:锁池,join,yield,sleep,线程,等待,CPU,wait
From: https://www.cnblogs.com/ccx-lly/p/17077380.html

相关文章

  • How to join testnet
    HowtojointestnetThesestepsassumeyouhaveChia installed.Step1.Run chiainitStep2.Ifyoudonotalreadyhavekeysgeneratedthenrun chiakeysg......
  • JavaScript中实现sleep睡眠函数的几种简单方法(转)
    转自:JavaScript中实现sleep睡眠函数的几种简单方法一.什么是sleep函数?sleep是一种函数,他的作用是使程序暂停指定的时间,起到延时的效果。javascript好像诶呦提供sleep工......
  • Pandas的join和merge到底哪个快
    大家好,我是小小明。上次我们的云朵君同学在不严谨的测试下,得出了join可以比merge快5倍的结论。虽然默认参数用法下,join确实比merge快一些,但实际上join并不见得会比merge快。......
  • join与split
    pythonjoin和split方法简单的说是:join用来连接字符串,split恰好相反,拆分字符串的。join将容器对象拆分并以指定的字符将列表内的元素(element)连接起来,返回字符串(注:容......
  • sql基础之from和ansi join一起使用(parse)总结
    createtabletemp1(aidVARCHAR(5)notnull,carVARCHAR(10)notnull);createtabletemp2(bidVARCHAR(5)notnull,usernameVARCH......
  • java多线程基础小白指南--关键字识别(start,run,sleep,wait,join,yield)
    在学习java多线程基础上,会遇到几个关键字,理解并识别它们是掌握多线程的必备知识,下面,我将通过源码或者程序演示给出我对这几个关键字的理解,如果有不同意见,欢迎在评论区或者......
  • 生成器与yield
    目录生成器与yieldyield表达式应用三元表达式、列表生成式、生成器表达式三元表达式列表生成式生成器表达式生成器与yield若函数体包含yield关键字,再调用函数,并不......
  • Hive SQL Join关联查询Apache Hadoop概述Hadoop YARN架构、组件及其交互流程Apache Hi
    Hadoop离线是大数据生态圈的核心与基石,是整个大数据开发的入门。本次分享内容让初学者能高效、快捷掌握Hadoop必备知识,大大缩短Hadoop离线阶段学习时间,下面一起开始今天的学......
  • sql基础之from和ansi join一起使用(parse)总结
    createtabletemp1(aidVARCHAR(5)notnull,carVARCHAR(10)notnull);createtabletemp2(bidVARCHAR(5)notnull,username......
  • 并查集(Disjoint-Set)
    并查集目录并查集定义模板题目原题链接题目描述输入格式输出格式数据范围分析并查集基本原理实现步骤问题1问题2问题3优化代码实现定义并查集(Disjoint-Set)是一种可以......