Как обеспечить выполнение инструкции if, несмотря на другие текущие задачи - робот-финч
Мне было поручено создать программу, которая заставит робота-финча перемещаться несколько случайным образом за выделенный промежуток времени, подсчитывая количество объектов, которые он обнаруживает во время движения, и затем возвращает эту сумму.
Я могу заставить робота двигаться случайным образом, и я могу заставить его подсчитывать объекты, которые он обнаруживает, но не в одно и то же время.
главный:
int millsec = 5000;
int obstacleOccur = finchRandom(millsec);
System.out.println(obstacleOccur);
метод:
static public int finchRandom(int x)
{
Finch myf = new Finch();
Random rand = new Random();
int obs = 0;
long time = System.currentTimeMillis()+x;
while(time - System.currentTimeMillis() > 0)
{
if (myf.isObstacle())
{
obs++; //this counts the obstacles
System.out.println("Obstacle");
} //below activates the wheels to move randomly,
//the function is setWheelVelocities(leftWheel,rightWheel,duration)
myf.setWheelVelocities(rand.nextInt(150)-75,rand.nextInt(150)-75,rand.nextInt(x/2));
}
return obs; //returns the count of obstacles
}
Я считаю, что это потому, что оператор if и приращение для подсчета препятствий не могут быть запущены во время движения робота финча. Есть ли какие-либо способы обойти это?
Заранее спасибо.
Ответ - многопоточное программирование, ваша задача - выяснить, как использовать THread или Runnable или лямбда-выражение для этого. Потому что любой данный поток может делать только одно за раз, и вам нужно делать по меньшей мере две вещи одновременно.