andorid thread使用sleep方法遇到的问题.
1 需求描述。
我的闹钟要实现重复播放,比如周一至周五早上七点触发闹钟广播,然后每天早上七点,闹钟重复播放三次(这里是动态设置的,最少一次,最多10次),每次间隔五分钟,并且在播放第二次的时候,我可以取消剩下未播放的闹钟(类似android自带的闹钟),我使用了thread的sleep方法来做重复播放三次的工作。
2 问题描述。
每天早上7点,能接收到系统发出的广播,第一次闹钟能正常播放,但间隔五分钟基本都不准,基本上都间隔了40分钟后线程才会被继续执行,奇怪的是这个问题只有早上才会出现,如果我白天设置闹钟,每次间隔都不会出问题。我怀疑是不是anodrid在锁屏状态达到几个小时后,thread的sleep方法有误差.
3 代理如下.
while (playCount < bean.getaPlayCount()) {
Util.printErrorLog( "playCount:"+playCount+",interval,"+bean.getaIntervalTime()+",播放总数:"+bean.getaPlayCount());
try {
Thread.sleep(1000*60*5);
} catch (InterruptedException e) {
e.printStackTrace();
Util.printErrorLog("控制线程播放次数出现异常!"+e.getMessage());
}
......
}
输出的日志正常,但实际的间隔时间就是不对.
我的闹钟要实现重复播放,比如周一至周五早上七点触发闹钟广播,然后每天早上七点,闹钟重复播放三次(这里是动态设置的,最少一次,最多10次),每次间隔五分钟,并且在播放第二次的时候,我可以取消剩下未播放的闹钟(类似android自带的闹钟),我使用了thread的sleep方法来做重复播放三次的工作。
2 问题描述。
每天早上7点,能接收到系统发出的广播,第一次闹钟能正常播放,但间隔五分钟基本都不准,基本上都间隔了40分钟后线程才会被继续执行,奇怪的是这个问题只有早上才会出现,如果我白天设置闹钟,每次间隔都不会出问题。我怀疑是不是anodrid在锁屏状态达到几个小时后,thread的sleep方法有误差.
3 代理如下.
while (playCount < bean.getaPlayCount()) {
Util.printErrorLog( "playCount:"+playCount+",interval,"+bean.getaIntervalTime()+",播放总数:"+bean.getaPlayCount());
try {
Thread.sleep(1000*60*5);
} catch (InterruptedException e) {
e.printStackTrace();
Util.printErrorLog("控制线程播放次数出现异常!"+e.getMessage());
}
......
}
输出的日志正常,但实际的间隔时间就是不对.
...全文
相关推荐
Java Thread之Sleep()使用方法总结
Java Thread之Sleep()使用方法总结Java Thread之Sleep()使用方法总结是Java多线程编程中的一种常见方法,用于使当前线程休眠,进入阻塞状态,暂停执行。
关于Thread.Sleep(0)的说明
### 关于Thread.Sleep(0)的深入解析在.NET框架中,`Thread.Sleep(0)`是一种特殊的线程操作方法,其行为与预期的含义存在一定的差异。
C#利用System.Threading.Thread.Sleep即时输出信息的详解
Response.Write($"XXX页生成成功,请等待下一页面生成..."); Response.Flush(); // 挂起2秒,然后进入下一个循环 System.Threading.Thread.Sleep
Java sleep方法及中断方式、yield方法代码实例
一、`Thread.sleep()`方法`Thread.sleep(long milliseconds)`方法用于使当前正在执行的线程暂停指定的毫秒数,将CPU资源释放给其他线程。
node thread.sleep实现示例
这种机制在并发编程中非常重要,因为它可以避免线程之间的竞争、死锁和饥饿等问题。在 Node.js 中,实现 Thread Sleep 功能可以让开发者更好地控制程序的执行流程。


