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

回答·5
最热
最新
  • ??怎么叫醒一个装睡得人
  • 在 Java 发展史上曾经使用 suspend()、resume()方法对于线程进行阻塞唤醒,但 随之出现很多问题,比较典型的还是死锁问题。 解决方案可以使用以对象为目标的阻塞,即利用 Object 类的 wait()和 notify()方 法实现线程阻塞。 首先,wait、notify 方法是针对对象的,调用任意对象的 wait()方法都将导致线程 阻塞,阻塞的同时也将释放该对象的锁,相应地,调用任意对象的 notify()方法则 将随机解除该对象阻塞的线程,但它需要重新获取改对象的锁,直到获取成功才 能往下执行;其次,wait、notify 方法必须在 synchronized 块或方法中被调用, 并且要保证同步块或方法的锁对象与调用 wait、notify 方法的对象是同一个,如 此一来在调用 wait 之前当前线程就已经成功获取某对象的锁,执行 wait 阻塞后当 前线程就将之前获取的对象锁释放
  • 怎么叫醒一个正在吃饭的人?
  • 首先题目不是很严谨,线程状态中 timewaiting, waiting, block 都是可以认为阻塞线程。每种处理方式都不一样
  • 我没有能力能解答问题。 但是,我非常愿意。 祝愿大家 事业有成 财源广进 恭喜发财