首页 > 学院 > 开发设计 > 正文

线程暂停和继续实现

2019-11-08 00:27:06
字体:
来源:转载
供稿:网友
开启一个子线程来显示发动机上的运行时间,如果发动机暂停运行,那么这个线程也会暂停,发动机又开动的时候,线程继续开启,数据也是连贯着的;
Timer timer=new Timer();TimerTask task=new TimerTask() {    @Override    public void run() {            }};timer.schedule(task,0);
这样的用法只能停止线程,继续将线程运行起来的写法我可能还没找到,可能有些细节没有注意到。
task.run();在task.cancel();运行之后,没有运行起来。于是就用了加锁的原理了。
用到加锁的原理发动机暂停的时候,子线程就等待,子线程为DiyThread.wait();发动机继续跑的时候,子线程就继续开启,DiyThread.notify();前提是在主线程上开启该子线程:DiyThread thread=new DiyThread();
PRivate class DiyThread extends Thread {    @Override    public void run() {        while(true){
         if(发动机暂停){                    
synchronized (thread){    try {        thread.wait();    } catch (InterruptedException e) {        e.printStackTrace();    }}
             }
        }    }}
在接收到发动机又继续开动的消息后,执行:
synchronized (thread){    try {        thread.notify();    } catch (Exception e) {        e.printStackTrace();    }}
有人说thread的锁如果没有加载就执行thread.wait()就会报错,我把synchronized (thread)中的thread换成xxxActivity.this,
昨天还不行,今天早上就行了,保险起见,还是都写成thread本身吧。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表