zoukankan      html  css  js  c++  java
  • join方法,wait()和sleep()

    join方法解释:方法x.join()的作用是使所属线程x 正常执行run()中的方法,而使得调用x.join()的线程处于无限期阻塞状态,等待x线程销毁后再继续执行线程z后面的代码。

    1、方法join的主要作用就是同步,它可以使得线程之间的并行执行变为串行执行。在A线程中调用了B线程的join()方法时,

    表示只有当B线程执行完毕时,A线程才能继续执行。

    2、方法join(long)是设定等待的时间。实际join()方法中调用的是join(0),当参数是0的时候表示无限期等待。

    3、方法join(long)的功能在内部是使用wait(long)来实现的,所以join(long)方法具有释放锁的特点。

    4、方法join在内部调用wait()方法进行等待,而synchronized关键字使用的是"对象监视器"原理作为同步。

    5、在join()过程中,如果当前线程被中断,则当前线程出现异常。(注意是调用thread.join()的线程被中断才会进入异常,比如a线程调用b.join(),a中断会报异常而b中断不会异常)

    sleep和wait的区别:

    1、这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。

    2、sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。

    3、使用范围:wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用 。

    4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常

  • 相关阅读:
    Unity场景加载完成回调
    UnityShader 一些算法总结
    Unity ugui 的 Button 组件的 点击、按下、抬起等按钮事件(eventTrigger)
    Unity 鼠标拖拽旋转物体
    JVM
    JVM
    JVM
    JVM
    JVM
    JVM
  • 原文地址:https://www.cnblogs.com/lgg20/p/12320659.html
Copyright © 2011-2022 走看看