[英]Multithreading Issue - JAVA thread.wait() on method that has to be used
我目前正在研究機器人。 我用EV3樂高積木。 我的目標是使用方法travelTo(x,y)使用最短路徑從A點行進到B. 此方法位於線程名稱Drive中,其中包含用於控制機器人運動的所有方法(turnTo(雙角度),travel(雙倍距離),travelTo(double x,double y),changeSpeed(int newSpeed)。 ..)。 我有另一個名為ObstacleAvoidance的線程,如果前方有障礙物並且使用P控制器技術跟蹤障礙物開始避開障礙物,則應該停止線程Drive。
我的問題是我的P控制器使用Thread Drive中的方法。 因此,當我看到障礙時,我無法做到:
if (obstacle){
Drive.wait();
while(isAvoiding){
pControler();
}
}
Drive.Notify();
private void pController(){
//use methods inside the DriveThread
}
我該如何解決這個問題? 換句話說,我怎樣才能停止機器人的當前動作,避開阻擋然后繼續我正在做的事情?
如果路徑中有障礙物,您可以使用Thread.interrupt()中斷驅動器線程。 然后你可以計算出如何處理障礙物然后再次開車。
https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html#interrupt--
您必須在Drive主題中捕獲https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html並決定該怎么做。 由於我不知道你的機器人是如何工作的,我建議只是停止線程。 在計算如何處理障礙物后,您可以啟動另一個Drive威脅。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.