java +其中哪些不会导致线程停止:等待,通知,睡眠,还有一个选项

时间:2013-09-05 12:13:36

标签: java multithreading

我被问到这个问题,在一个多项选择题(只有1个是正确的)测试中,但我不确定这个答案是什么

which of these will not cause the thread to stop ?  
wait,notify,sleep,One more option provided(i dont remember)

我非常理解这些,但不确定这个问题的答案是什么,并且寻找相同的

3 个答案:

答案 0 :(得分:2)

wait - >线程调用等待它持有锁的对象,然后依赖于其他一些线程notify

notifynotifyAll - >通知将唤醒线程并将它们放入可运行的队列中,并且在锁定上调用通知的线程释放锁定后,来自可运行队列的线程中的一个将保持锁定。

sleep - >顾名思义,它将停止处理线程并将其置于休眠状态达到指定的持续时间。直到有人中断或超时发生。

所以答案是 notify 不会导致线程停止。

答案 1 :(得分:1)

notify将唤醒进程或将其置于运行队列中。您给出的其他两个选项将进程置于等待队列中。

答案 2 :(得分:0)

等待和睡眠会导致线程暂时停止执行。

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Thread.html#sleep%28long%29

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html#wait%28%29

Notify将在之前等待调用的线程(或者notifyAll情况下的线程)中恢复执行。

鉴于这三个选项,通知将是最准确的答案