此设计取决于您15秒钟要做什么。两种最合理的情况是“每X进行15秒钟”或“等待X发生或15秒钟以较早者为准”,这将导致截然不同的代码。
刚等
线程睡眠(15000)
这不会重复,但是如果您不希望在15秒钟之内做任何事情,效率会高得多(不执行任何操作会浪费更少的CPU)。
重复一些代码15秒钟
如果您真的想循环15秒,那么您的解决方案就可以了,只要您的代码不会花费太长时间即可。就像是:
long t= System.currentTimeMillis();long end = t+15000;while(System.currentTimeMillis() < end) { // do something // pause to avoid churning Thread.sleep( xxx );}等待15秒或其他情况
如果您希望代码在恰好15秒后被中断,则无论执行什么操作,都需要一个多线程解决方案。在java.util.concurrent中查看许多有用的对象。大多数锁定方法(如wait())都有一个超时参数。一个信号可能做的正是你所需要的。



