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只会随机让其中一个线程去争夺锁。

  • 相关阅读:
    "Coding Interview Guide" -- 删除无序单链表中值重复出现的节点
    "Coding Interview Guide" -- 设计一个有getMin功能的栈
    "Coding Interview Guide" -- 仅用递归函数和栈操作逆序一个栈
    "Coding Interview Guide" -- 猫狗队列
    "Coding Interview Guide" -- 阶乘
    "Coding Interview Guide" -- 不用额外变量交换两个整数的值
    IDEA问题
    JAVA
    Log4j
    MAVEN教程
  • 原文地址:https://www.cnblogs.com/blackdd/p/8657949.html
Copyright © 2011-2022 走看看