簡體   English   中英

多線程問題 - 必須使用的方法上的JAVA thread.wait()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM