본문 바로가기

개발/JAVA

while 문 무한루프시 문자입력 제어

반응형
public class ThreadOutputCont {
	// 출력할 변수       
	private int out = 0;              

	// 쓰레드 실행/종료를 위한 플래그       
	private boolean onOff = true;
	
	public boolean isOnOff() {
		return onOff;       
	}       
	
	public void setOnOff(boolean onOff) {             
		this.onOff = onOff;       
	}       
	
	public int getOut() {             
		return out;       
	}       
	
	public void setOut(int out) {             
		this.out = out;       
	}
}//위는 Thread 관리 컨트롤러

import java.util.Scanner;

//Thread를 상속

public class ThreadOutput extends Thread {

       // 쓰레드 콘트롤러 클래스
       private ThreadOutputCont toc = null;

       // 생성자(인수로ThreadOutputCont 를 받음)
       public ThreadOutput(ThreadOutputCont toc) {
             this.toc = toc;
       }

       public void run() {
             // ThreadOutputCont 클래스의 onOff가 true일동안 루프
             while (toc.isOnOff()) {
                    // ThreadOutputCont 클래스의 out값을 출력
                    System.out.println(toc.getOut());
					
                    try {
					   // 1초대기
					   Thread.sleep(1000);
                    } catch (InterruptedException e) {
					   e.printStackTrace();
                    }
             }
       }

       public static void main(String[] args) {
             ThreadOutputCont toc = new ThreadOutputCont();

             Scanner sc = new Scanner(System.in);

             // 무한루프
             while (true) {
                    // 새로운 입력이있으면
                    if (sc.hasNext()) {
                           // ThreadOutputCont 의 onOff플래그를 false로 변경
                           // false로 변경함으로써 쓰레드를 종료시킴
                           toc.setOnOff(false);

 
                           // 1초대기
                           try {
                                 Thread.sleep(1000);
                           } catch (InterruptedException e) {
                                 e.printStackTrace();
                           }

                           // ThreadOutputCont 의 on값을 새로운 입력값으로 변경
                           toc.setOut(sc.nextInt());

                           // 새로운 입력값을 출력하는 새로운 쓰레드 생성
                           ThreadOutput top = new ThreadOutput(toc);

                           // onOff플래그를 true로 변경
                           toc.setOnOff(true);

                           // 쓰레드 시작
                           top.start();
                    }
             }
       }
}
//위는 실행파일
반응형

자바스크립트를 허용해주세요.
[ 자바스크립트 활성화 방법 ]
from Mohon Aktifkan Javascript!