SystemClock.sleep()与Thread.sleep()在等待信号量循环时

srf*_*srf 9 multithreading android sleep thread-sleep

为了同步/队列访问共享资源,我将使用信号量,在等待循环的帮助下.

为了不碰到CPU挂钩,我想sleep()在那个while循环中稍微进行一下.

我搜索了http://developer.android.com参考,发现了两个这样的sleep()函数,我很困惑哪个适合哪种情况:

  1. Thread.sleep()方法
  2. SystemClock.sleep()

哪一个更适合我描述的情况,为什么?

Ebo*_*ike 19

首先,你真的需要一个等待循环吗?您通常可以使用正确的通知来解决您的问题,即拥有一个Object,在其上调用wait()和notify()或其他方式(如您的情况下的阻塞队列或Semaphore.acquire()).

也就是说,如果你真的想要一个轮询循环(除非你必须这样做,你真的不应该这样做),我会坚持使用Thread.sleep().正如文档所说,没有太大的区别,除了你可以选择中断Thread.sleep().不要让自己摆脱这样做的选择.

请注意,在Thread.sleep()的情况下,你将不得不捕获该异常 - 如果你非常懒,你可能会坚持使用SystemClock.sleep().