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本身吧。
新闻热点
疑难解答