내 질문에 대해 매우 감사 드리며, 매우 혼란스럽고 쉽게 해결할 수있는 문제로 인해 좌절하고 있습니다. 정말 도움이 될 것입니다.Scanner에서 제공하는 조건에 따라 스레드가 동작을 수행하도록하려면 어떻게해야합니까?
내가 원하는 것은 닫혀 있거나 열리는 장벽의 두 가지 인스턴스를 가지려는 것입니다. 장벽이 열려야하는지 확인하는 방법은 스캐너를 통해 이루어 지므로 1을 클릭하면 메시지 "입학 장벽"+ threadid + 내가 main 메소드를 실행 할 때마다
public class MainClass{
public static void main(String[] args) {
EntranceBarrier e1 = new EntranceBarrier(); //Entrance Barrier 1
EntranceBarrier e2 = new EntranceBarrier(); //Entrance Barrier 2
e1.start();
e2.start();
System.out.println("Open?");
Scanner sc = new Scanner(System.in);
int operation = sc.nextInt();
while(operation != 0){
switch (operation) {
case 1:
e1.setOpen(true);
e2.setOpen(true);
System.out.println("Opt. 1 Working");
break;
case 2:
e1.setOpen(false);
e2.setOpen(false);
System.out.println("Opt. 2 Working");
break;
default:
System.out.println("NOPE");
break;
}
System.out.println("Open?");
operation = sc.nextInt();
}
}
}
이 처음 "입학 장벽 청산"을 인쇄하고 내가 스캐너에 입력 한 단지 수신 거부. 1 "을 출력합니다 작업"개설 " "이것은 setOpen()을 true로 변경하지 않음을 의미합니다.
메인 스레드 외에는 여기에서 스레드를 사용하고 있지 않습니다. 모든 열기 및 닫기 작업은 주 스레드에서 수행됩니다. 응용 프로그램이 시작되고 5 초 후 EntranceBarrier 스레드가 종료됩니다. – hal