我被问到这个问题,在一个多项选择题(只有1个是正确的)测试中,但我不确定这个答案是什么
which of these will not cause the thread to stop ?
wait,notify,sleep,One more option provided(i dont remember)
我非常理解这些,但不确定这个问题的答案是什么,并且寻找相同的
答案 0 :(得分:2)
wait
- >线程调用等待它持有锁的对象,然后依赖于其他一些线程notify
notify
和notifyAll
- >通知将唤醒线程并将它们放入可运行的队列中,并且在锁定上调用通知的线程释放锁定后,来自可运行队列的线程中的一个将保持锁定。
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情况下的线程)中恢复执行。
鉴于这三个选项,通知将是最准确的答案