美文网首页
线程常用的几种方法的区别

线程常用的几种方法的区别

作者: DH大黄 | 来源:发表于2020-05-18 10:49 被阅读0次
    方法 所属对象 是否会释放锁 作用
    sleep Thread 不会释放锁 让线程进入睡眠(线程睡眠期间CPU不会再分配时间片给当前线程)
    yeild Thread 会释放锁 告诉CPU当前线程执行的差不多了,让出CPU时间片,回到可执行的状态(可能又回马上执行)
    wait notify/notifyAll Object 会释放锁 必须放在同步代码块中执行<br />进入线程等待池等待被唤醒(可能会马上就会被唤醒)

    1.为什么wait,notify/notifyAll被定义在对象内,而sleep被定义在线程内

    因为wait,notify/notifyAll都是锁级别的操作,Java每一个对象都可以进行上锁。Java线程中没有可以供任何对象使用的锁和同步器,所以他们被定义在了对象内

    2.调用Thread.wait会怎么样

    此处Thread也是一个对象,线程执行退出时会自动执行notify,这样对我们的程序设计会有影响

    相关文章

      网友评论

          本文标题:线程常用的几种方法的区别

          本文链接:https://www.haomeiwen.com/subject/utxuohtx.html