Timer timer=new Timer();TimerTask task=new TimerTask() {    @Override    public void run() {            }};timer.schedule(task,0);這樣的用法只能停止線程,繼續(xù)將線程運(yùn)行起來(lái)的寫(xiě)法我可能還沒(méi)找到,可能有些細(xì)節(jié)沒(méi)有注意到。task.run();在task.cancel();運(yùn)行之后,沒(méi)有運(yùn)行起來(lái)。于是就用了加鎖的原理了。用到加鎖的原理發(fā)動(dòng)機(jī)暫停的時(shí)候,子線程就等待,子線程為DiyThread.wait();發(fā)動(dòng)機(jī)繼續(xù)跑的時(shí)候,子線程就繼續(xù)開(kāi)啟,DiyThread.notify();前提是在主線程上開(kāi)啟該子線程:DiyThread thread=new DiyThread();PRivate class DiyThread extends Thread {    @Override    public void run() {        while(true){         if(發(fā)動(dòng)機(jī)暫停){                    synchronized (thread){    try {        thread.wait();    } catch (InterruptedException e) {        e.printStackTrace();    }}             }        }    }}在接收到發(fā)動(dòng)機(jī)又繼續(xù)開(kāi)動(dòng)的消息后,執(zhí)行:synchronized (thread){    try {        thread.notify();    } catch (Exception e) {        e.printStackTrace();    }}有人說(shuō)thread的鎖如果沒(méi)有加載就執(zhí)行thread.wait()就會(huì)報(bào)錯(cuò),我把synchronized (thread)中的thread換成xxxActivity.this,昨天還不行,今天早上就行了,保險(xiǎn)起見(jiàn),還是都寫(xiě)成thread本身吧。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注