간단한 멀티 스레드 로봇을 만들려고합니다. 헤드는 실과 두 개의 다리, 한 개의 다리는 하나의 실로되어있다. 모든 것이 잘 작동하지만, 각 다리를 제어하기 위해 제어 스레드를 만드는 방법은 무엇입니까?스레드를 생성하여 다른 스레드를 제어하는 방법은 무엇입니까?
내 코드는 다음과 같습니다
public class ClientInterface {
public static void main(String [] args) {
new Controller().execute();
}
}
내가 다른 스레드를 대기 위해 join()
을 사용한다는 것을 알고
public class Controller implements CommandInterface{
private final Object monitor = new Object();
private int numOfSteps = 10;
class Legs implements Runnable {
private final String whichLeg;
Legs(String whichLeg) {
this.whichLeg = whichLeg;
}
@Override
public void run() {
for(int i = 0; i < numOfSteps;i++) {
synchronized (monitor) {
step();
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
monitor.notify();
try {
monitor.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
private void step() {
System.out.println(whichLeg);
}
}
Legs left = new Legs("left feet");
Legs right = new Legs("right feet");
@Override
public void execute() {
new Thread(left).start();
new Thread(right).start();
}
}
내가이 클래스를 사용 로봇을 시작합니다. 나는이 같은 결과를보고 싶어 : 나는 주요 방법에 머리 스레드를 생성하고 join()
전화를 시도
Init head head sends make 1 step left feet head sends make 2 step right feet and so on...
하지만, 현재의 thread 기다려야하지만 난 legs.i 같은 머리 스레드를 만들려고 기다릴 필요 Thread head = new Thread(new Runnable{ tried here to run execute method });
하지만 모두 작동하지 않습니다.