📄 zvoiceengineupdatethread.java
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package zdrive.engines;import zdrive.protocols.*;import javax.swing.JLabel;import java.util.Date;/** * * @author Mohamed Aly */public class ZVoiceEngineUpdateThread extends Thread implements ZUpdaterThreadsInterface{ private int event; private ZAbstractEvent abs_event; private JLabel repeat; public ZVoiceEngineUpdateThread(int event, ZAbstractEvent abs_event, JLabel repeat) { this.event = event; this.abs_event = abs_event; this.repeat = repeat; } @Override public void run() { SpeedTimeMonitor temp_mon = new SpeedTimeMonitor(abs_event, this); temp_mon.start(); ZVoiceEngine ve = new ZVoiceEngine(); while (!abs_event.isCompleted()) { repeat.setEnabled(false); ve.talkEvent(abs_event.getRemainingDistance(), abs_event.getVelocity(), event); while(!ve.isDone()){ try{ sleep(200); }catch(Exception e) { e.printStackTrace(); } } temp_mon.resetSleepingTime(); repeat.setEnabled(true); synchronized(this){ try { if(!abs_event.isCompleted()){ wait(); } } catch (Exception e) { e.printStackTrace(); } } } repeat.setEnabled(false); System.out.println("DONE WITH VOICE ENGINE THREAD"); } public synchronized void wakeMeUp(){ notify(); } }class SpeedTimeMonitor extends Thread { private ZAbstractEvent abs_event; private ZVoiceEngineUpdateThread zve; private int sleepingtime; public SpeedTimeMonitor(ZAbstractEvent abs_event, ZVoiceEngineUpdateThread zve) { this.abs_event=abs_event; this.zve = zve; this.sleepingtime = 0; } @Override public void run(){ double velocity; double remaining_distance; double target; boolean finalwarning; while(!abs_event.isCompleted()){ velocity = abs_event.getVelocity(); remaining_distance = abs_event.getRemainingDistance(); target = velocity * 2.222 + 37.144; finalwarning = remaining_distance <= target; if(remaining_distance <= target+50 || finalwarning ||abs_event.isCompleted()){ zve.wakeMeUp(); } else if(sleepingtime==60000){ sleepingtime=0; zve.wakeMeUp(); } if(finalwarning)break; try{ sleep(500); sleepingtime+=500; }catch(Exception e) { e.printStackTrace(); } } } public synchronized void resetSleepingTime(){ this.sleepingtime=0; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -