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

  • 相关阅读:
    Attributes in C#
    asp.net C# 时间格式大全
    UVA 10518 How Many Calls?
    UVA 10303 How Many Trees?
    UVA 991 Safe Salutations
    UVA 10862 Connect the Cable Wires
    UVA 10417 Gift Exchanging
    UVA 10229 Modular Fibonacci
    UVA 10079 Pizza Cutting
    UVA 10334 Ray Through Glasses
  • 原文地址:https://www.cnblogs.com/blackdd/p/8657949.html
Copyright © 2011-2022 走看看