• Java 中你怎样唤醒一个阻塞的线程?


    在 Java 发展史上曾经使用 suspend()、resume()方法对于线程进行阻塞唤醒,但

    随之出现很多问题,比较典型的还是死锁问题。

    解决方案可以使用以对象为目标的阻塞,即利用 Object 类的 wait()和 notify()方

    法实现线程阻塞。

    首先,wait、notify 方法是针对对象的,调用任意对象的 wait()方法都将导致线程

    阻塞,阻塞的同时也将释放该对象的锁,相应地,调用任意对象的 notify()方法则

    将随机解除该对象阻塞的线程,但它需要重新获取改对象的锁,直到获取成功才

    能往下执行;其次,wait、notify 方法必须在 synchronized 块或方法中被调用,

    并且要保证同步块或方法的锁对象与调用 wait、notify 方法的对象是同一个,如

    此一来在调用 wait 之前当前线程就已经成功获取某对象的锁,执行 wait 阻塞后当

    前线程就将之前获取的对象锁释放。

  • 相关阅读:
    网络CCNA基础了解
    KVM 安装 VMware 虚拟机
    [转载]JS浏览器兼容性问题
    java中数组是不是对象?
    [转载]request.getServletPath()方法
    weblogic下更改jsp不生效的解决办法
    java之args[0]
    docker小demo
    eclipse优化
    [转载]oracle建表语句大全
  • 原文地址:https://www.cnblogs.com/programb/p/13020272.html
Copyright © 2020-2023  润新知