Thread.sleep()无效?

来源:互联网 发布:怎么解绑mac地址 编辑:程序博客网 时间:2024/06/11 05:57

有时候想要执行定时任务,会用到 Handler + Thread + Runnable 的结构:

Handler mHandler = new Handler() {    @Override    public void handleMessage(Message message) {        //在里面执行操作    }};
new Thread(new MyTask()).start();
class MyTask implements Runnable {    @Override    public void run() {Message message = new Message();mHandler.sendMessage(message);try {            Thread.sleep(5000);} catch(InterruptedException ie) {}    }}

  设置为每5秒发送Message,执行一次操作。实际情况下有时两次操作间隙没有5秒,原因是当 Thread.sleep() 抛出异常后,就不会休眠五秒钟了。

  修改办法是:
class MyTask implements Runnable {    @Override    public void run() {        Message message = new Message();        mHandler.sendMessage(message);        while(true) {            try {                Thread.sleep(5000);                 break;            } catch(InterruptedException ie) {}        }    }}
0 0