zoukankan      html  css  js  c++  java
  • 多线程的sleep、yield、join用法及sleep与wait的区别

    Thread类的方法列表:sleep、yield、join用于线程的协作,围绕线程的调度

    1、join()等待线程结束:调用join方法的线程,执行结束后才会释放锁主线程main中调用启动线程(调用start),然后调用该线程的join方法,可以达到主线程等待工作线程运行结束后才执行的效果,并且join要在start之后调用。

    2、sleep()暂停执行当前线程,让线程睡眠一段时间:挂起线程一段时间,让出CpU,不释放锁

    3、interrupt()中断线程:中断当前线程,抛出异常,释放锁

    4、yield()暂停线程:使正在执行的线程临时暂停,允许其他线程执行,让出CpU,释放锁,当前线程处于runnable状态(可能别人抢到CpU也可能是它自己抢到)

    5、Thread.currentThread().getName()   :获取当前线程名字

    以下两个方法是Object类定义的方法,java线程间通过他们实现通信

    7、wait()使线程等待:挂起当前线程,直到interrupt()方法中断它或者另一个线程调用notify()或notifyAll()方法通知它。(wait方法调用时会释放锁,让出CpU

      wait方法只能在synchronized块或者synchronized方法中使用(因为要先获取锁,wait才能释放锁)

    8、notify()或notifyAll():唤醒调用了wait()方法的线程,只能用在同步方法或同步块内部。

      notify与notifyAll区别:notifyAll会让所有处于等待池中的线程全部进入锁池去争夺锁,而notify只会随机让其中一个线程去争夺锁。

  • 相关阅读:
    QD提示软件过期a
    病毒conime.exe、mmlucj.exe、severe.exe 查杀办法
    当UG的License服务器换了后, 客户端如何调整?
    怎样理解构造函数和析构函数
    详解Par2 Files
    Nginx的基本使用和配置
    如何使用bootstrap实现轮播图?
    使用相对长度单位rem布局网页内容
    java中如何对汉字进行排序?
    班级日常分享:一天一瞬间!
  • 原文地址:https://www.cnblogs.com/blackdd/p/8657949.html
Copyright © 2011-2022 走看看