首页 > 试题广场 >

下面哪个行为被打断不会导致InterruptedExcept

[单选题]

下面哪个行为被打断不会导致InterruptedException:( )?

  • Thread.join
  • Thread.sleep
  • Object.wait
  • CyclicBarrier.await
  • Thread.suspend

抛InterruptedException的代表方法有:

  • java.lang.Object 类的 wait 方法

  • java.lang.Thread 类的 sleep 方法

  • java.lang.Thread 类的 join 方法

发表于 2017-11-30 13:22:46 回复(90)
看了答案,对于常见的ABC都有说明,这里也不多解释了,对于D答案我看没有说明,我简单说一下,CyclicBarrier是一个屏障类,它的await方法可以简单的理解为:等待多个线程同时到达之后才能继续进行,在此之前它就是这些线程的屏障,线程不能继续进行,而对于失败的同步尝试,CyclicBarrier 使用了一种要么全部要么全不 (all-or-none) 的破坏模式:如果因为中断、失败或者超时等原因,导致线程过早地离开了屏障点,那么在该屏障点等待的其他所有线程也将通过 BrokenBarrierException(如果它们几乎同时被中断,则用 interruptedException)以反常的方式离开。因此它被中断也是可以抛出interruptedException的,如果还是不清楚,查看一下JavaAPI,对于这个类介绍的清清楚楚。
发表于 2018-03-08 21:25:02 回复(17)
API里面写的:当线程在活动之前或活动期间处于正在等待、休眠或占用状态且该线程被中断时,抛出该异常。
编辑于 2018-03-09 19:23:00 回复(38)
suspend()这个方法容易造成死锁,已被标记过时
发表于 2017-08-18 20:34:57 回复(6)
suspend()这个方法容易造成死锁,已被标记过时!!
发表于 2017-08-19 20:01:31 回复(0)
Thread类:

Object类:

CyclicBarrier类:

看方法后面throws抛出的异常,只有suspend没有抛出,这个方法被废弃掉了
编辑于 2018-11-28 21:40:48 回复(1)
E选项的Thread.suspend是挂起线程,但是不释放锁,这个早就弃用了
发表于 2018-11-17 20:06:31 回复(0)
suspendsuspend方法作用是阻塞一个线程,不会释放锁,直到其他的线程调用resume方法,才能继续向下执行。被打断不会导致InterruptedException
发表于 2018-11-09 16:48:22 回复(0)
不推荐使用 suspend() 去挂起线程的原因,是因为 suspend() 在导致线程暂停的同时,并不会去释放任何锁资源。其他线程都无法访问被它占用的锁。直到对应的线程执行 resume() 方法后,被挂起的线程才能继续,从而其它被阻塞在这个锁的线程才可以继续执行。
发表于 2020-02-25 21:29:05 回复(0)
suspend方法作用是阻塞一个线程,不会释放锁,直到其他的线程调用resume方法,才能继续向下执行。被打断不会导致InterruptedException。
发表于 2019-04-14 21:19:07 回复(0)

抛InterruptedException的代表方法有:

  • java.lang.Object 类的 wait 方法

  • java.lang.Thread 类的 sleep 方法

  • java.lang.Thread 类的 join 方法

发表于 2018-10-26 20:03:55 回复(0)
suspend()已经凉了
发表于 2018-05-01 22:13:35 回复(0)
我还以为我理解错误了,死锁就不会抛出inter异常了?
发表于 2017-11-05 22:46:48 回复(0)
API里面写的:当线程在活动之前或活动期间处于正在等待、休眠或占用状态且该线程被中断时,抛出该异常。
发表于 2022-07-08 00:29:32 回复(0)
记:

抛InterruptedException的代表方法有:

  • java.lang.Object 类的 wait 方法

  • java.lang.Thread 类的 sleep 方法

  • java.lang.Thread 类的 join 方法

发表于 2022-05-11 14:33:48 回复(0)
当线程在活动之前或活动期间处于正在等待、休眠或占用状态且该线程被中断时,抛出该异常

发表于 2022-01-18 11:20:48 回复(0)
当线程在活动之前或者活动期间中断(它是活动前或者是活动期间中断。而不是调用Suspend使线程挂起,暂停执行,故suspend不会抛出该异常),或者是线程在等待(await/wait)、睡眠(sleep)、占用(join)时抛出该异常。(这几项都会抛出该异常)
发表于 2019-07-10 18:56:52 回复(0)
API上边是这么写:
当线程在活动之前或者活动期间处于正在等待,休眠或占用状态且线程中断 时,抛出该异常
发表于 2019-01-21 22:02:26 回复(0)

java.lang.Object wait() throws InterruptedException
java.lang.Thread sleep() throws InterruptedException
java.lang.Thread join() throws InterruptedException

发表于 2018-03-13 14:01:34 回复(0)
Thread.suspend 被打断时不会抛出 InterruptedException 异常,suspend() 方法已经过时,容易造成死锁。
发表于 2018-03-04 14:59:44 回复(0)