현재 로봇에서 작업 중입니다. 나는 EV3 레고 벽돌을 사용합니다. 내 목표는 가장 짧은 경로를 사용하여 travelTo (x, y) 메소드를 사용하여 A 지점에서 B 지점으로 이동하는 것입니다. 이 메서드는 스레드 이름 Drive에 있습니다.이 메서드는 내 로봇의 이동을 제어하는 데 사용되는 모든 메서드 (turnTo (double angle), travel (double distance), travelTo (double x, double y), changeSpeed (int newSpeed))를 포함합니다. ..). 전방에 장애물이있는 경우 스레드 드라이브를 중지하고 장애물을 피하기 위해 P 제어기 기술을 사용하여 장애물을 피하기 시작한 ObstacleAvoidance라고하는 다른 스레드가 있습니다.다중 스레드 문제 - Java Thread.wait() 사용해야하는 메서드에
내 문제는 내 P 컨트롤러가 스레드 드라이브 내부의 메서드를 사용한다는 것입니다. 따라서 장애물을 발견하면 다음을 할 수 없습니다.
if (obstacle){
Drive.wait();
while(isAvoiding){
pControler();
}
}
Drive.Notify();
private void pController(){
//use methods inside the DriveThread
}
이 문제를 해결하려면 어떻게해야합니까? 즉, 로봇의 현재 동작을 멈추고 블록을 피하고 내가 계속하고있는 작업을 계속 수행하려면 어떻게해야합니까?
여기에'java.lang.Thread'가 있습니까? 왜냐하면 당신은 스레드 객체에 대해서'wait()'와'notify()'를 호출하지 않기 때문입니다. – biziclop
메쏘드는 그 객체가 다른 쓰레드에 의해 호출되는 것을 멈추지 말아야하는지 여부를 나타내는 객체에 있습니다. 그리고 작동하기 전에 다른 기능을 중지해야하는 경우 기능을 2 개의 스레드로 분할하는 이유는 무엇입니까? 로봇에 관해서는 아무 것도 모른다. 그러나 이것은 내가 어떻게 사물이 어떻게 조직되어 있는지를 묻는다. –