gpt4 book ai didi

java - 多线程问题 - JAVA thread.wait() 必须使用的方法

转载 作者:太空宇宙 更新时间:2023-11-04 12:03:03 24 4
gpt4 key购买 nike

我目前正在研究机器人。我使用 EV3 乐高积木。我的目标是使用最短路径的 TravelTo(x,y) 方法从 A 点旅行到 B 点。该方法位于名为 Drive 的线程中,其中包含用于控制机器人运动的所有方法(turnTo(double angle)、travel(double distance)、travelTo(double x, double y)、changeSpeed(int newSpeed)...)。我有另一个名为 ObstacleAvoidance 的线程,如果前面有障碍物,它应该停止线程 Drive,并开始使用 P Controller 技术来避开障碍物以跟随障碍物。

我的问题是我的 P Controller 使用线程驱动器内部的方法。因此,当我看到障碍物时我不能这样做:

if (obstacle){    
Drive.wait();
while(isAvoiding){
pControler();
}
}
Drive.Notify();


private void pController(){
//use methods inside the DriveThread
}

如何解决这个问题?换句话说,我怎样才能停止机器人当前的 Action ,避开障碍物,然后继续我正在做的事情?

最佳答案

如果路径中有障碍物,您可以使用 Thread.interrupt() 中断驱动线程。然后你可以计算如何处理障碍物,然后再次驾驶。

https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html#interrupt--

您必须捕获 https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html在 Drive 线程中并决定接下来要做什么。因为我不知道你的机器人是如何工作的,所以我建议停止线程。在计算出如何处理障碍后,您可以启动另一个 Drive 威胁。

关于java - 多线程问题 - JAVA thread.wait() 必须使用的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40698106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com