为了同步/排队访问共享资源,我将使用Semaphore和等待循环。为了避免CPU占用过高,在
while
循环中我想要使用sleep()
。
我在http://developer.android.com参考文档中搜索到两个这样的sleep()函数,我不确定哪一个适用于该情况:
哪一个更适合我描述的情况,为什么?
while
循环中我想要使用sleep()
。
我在http://developer.android.com参考文档中搜索到两个这样的sleep()函数,我不确定哪一个适用于该情况:
哪一个更适合我描述的情况,为什么?
首先,你真的需要一个等待循环吗?通常可以使用适当的通知来解决问题,例如使用 Object,在其上调用 wait()
和 notify()
或其他方法(如阻塞队列或在您的情况下使用 Semaphore.acquire()
)。
话虽如此,如果你真的想要一个轮询循环(除非必须,否则你确实不应该这样做),我建议使用 Thread.sleep()
。正如文档所说,两者没有太大区别,只是你有中断 Thread.sleep()
的选项。不要放弃这个选项。
请注意,在使用 Thread.sleep()
的情况下,你需要捕获那个异常- 如果你非常懒,你可能会坚持使用 SystemClock.sleep()
。
Semaphore.acquire()
可能是最好的选择。 - srf
SystemClock.sleep()
在UI线程中运行... 我认为。 - Yousha Aleayoub