美文网首页
Thread.sleep(),Object.wait(),Loc

Thread.sleep(),Object.wait(),Loc

作者: 不知不怪 | 来源:发表于2022-05-13 23:45 被阅读0次

    1. Thread.sleep()

    1.1 不会释放占有的锁
    1.2 只有超时版本
    1.3 只能到时间自己醒来
    1.4 醒来看一定继续执行后续代码
    1.5 方法声明有中断异常
    1.6 本身是一个native方法

    2. Object.wait()

    2.1 会释放资源
    2.2 有超时版本也有非超时版本
    2.3 不带时间的只能另一个线程notify
    2.4 带时间的可以另一个线程notify也可以超时唤醒
    2.5 被唤醒不一定立即执行后续代码
    2.6 方法声明有中断异常
    2.7 需要在synchronized中执行
    2.8 notify不能在其之前执行
    2.9 wait(timeout)是一个native方法

    3. LockSupport.park()

    3.1 不会释放占有的锁资源
    3.2 有超时版本也有非超时版本
    3.3 可以在任意地方使用
    3.4 方法声明不带中断异常
    3.5 底层调用Unsafe的native方法park()
    3.6 不带超时的只能被另一个线程调用unpark()唤醒
    3.7 带超时的可以被另一个线程unpark()唤醒也可以等待超时唤醒
    3.8 唤醒后一定继续执行后续代码 unpark()可以在park()之执行
    3.9 实现是原理是二元信号量

    4. Condition.await()

    4.1 有超时版本也有非超时版本
    4.2 会释放锁资源
    4.3 不带时间的只能另一个线程signal()
    4.4 带时间的可以被另一线程signal()也可以等待超时唤醒
    4.5被唤醒后不一定立即执行后续代码
    4.6方法声明有中断异常
    4.7 需要在lokc()块中执行
    4.8 signal()不能在其之前执行
    4.9底层调用LockSupport.park()实现阻塞

    相关文章

      网友评论

          本文标题:Thread.sleep(),Object.wait(),Loc

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