5
A
回答
4
当线程无法获取信号量时(由于缺少许可证)会发生什么情况。它会被转移到等待状态吗?
是的。如果你在谈论java.util.concurrent.Semaphore
(和the aquire
method这是发生了什么:
获取一个许可从这个信号,阻塞直到有一个可用,或者线程被中断
[...]
如果没有可用的许可,那么当前线程用于线程调度目的,禁用并一直处于休眠状态的发生两种情况之一:
其他一些线程调用此信号量的release()方法,并且当前线程旁边将被分配一个许可证;或
某些其他线程会中断当前线程。
tryAquire
将然而,顾名思义,只能尽量将收购的锁,而不是阻塞返回false,如果它没有许可证。
当信号量变为可用时,线程是否会恢复前一个执行顺序?
是的。如果另一个线程调用release
,则此线程可能会从acquire
返回并继续它的执行。
相关问题
- 1. 未能获取锁的线程会发生什么情况?
- 2. 当信号量在RTOS中发布或发信号时会发生什么?
- 3. 如果我不摧毁信号量会发生什么?
- 4. 线程结束后会发生什么?
- 5. ConcurrentHashMap.clear()读线程会发生什么?
- 6. Android SIP - 未能获得邀请信号
- 7. 当获取它的线程退出时,Mutex会发生什么?
- 8. Qt:如果你发送信号太快会发生什么?
- 9. exec上的挂起信号和信号掩码会发生什么?
- 10. “发布信号量的线程不需要与获取它的线程相同”是什么意思?
- 11. 当一个线程完成其互斥量时,线程会发生什么?
- 12. 为什么信号不会触发?
- 13. 信号性能发生重大变化的原因是什么?
- 14. 为什么信号不会被捕获?
- 15. “D”状态(或TASK_UNINTERRUPTIBLE)中的进程的信号会发生什么?
- 16. Qt信号和插槽连接两次...会发生什么?
- 17. Java:信号量:生产者消费者:线程和线程组
- 18. .NET:如何获得后台线程信号主线程数据?
- 19. 主线程无法获得信号形式工作线程
- 20. 发信号通知线程
- 21. java线程信号发送
- 22. 发送信号给线程
- 23. 为什么信号量被获取而未被创建?
- 24. 如果没有线程正在等待并发送条件信号,会发生什么情况?
- 25. Firefox扩展javascript模块:未导出符号会发生什么?
- 26. 未初始化的变量会发生什么? C++
- 27. PHPUnit:tearDown()方法未处理的变量会发生什么变化?
- 28. 未接受连接会发生什么?
- 29. SVN未使用时会发生什么?
- 30. 未使用字段会发生什么
因此它被移动到BLOCKED状态,就像当线程无法获得监视器锁定时发生的情况。问题中的“等待状态”可能不是正确的词? – blitzkriegz 2010-10-21 09:16:43