4-2.(3) 단일Thread-> 멀티Thread

zhyun·2020년 9월 22일
0

HighJava

목록 보기
25/67

☆단일쓰레드의 사용자 입력처리

  • 카운트다운 하는 for문 -> 사용자가 10초동안 입력을 안하면
    프로그램을 끝내고 싶은데 쓰레드 1개(단일 쓰레드)로는 불가능하다.
    T05_ThreadTest
public class T05_ThreadTest {
	public static void main(String[] args) {
		String str = JOptionPane.showInputDialog("아무거나 입력하세요");
		System.out.println("입력한 값은 "+ str +"입니다.");
		
		//카운트다운 하는 for문 -> 사용자가 10초동안 입력을 안하면 
		//프로그램을 끝내고 싶은데 쓰레드 1개(단일쓰레드)로는 불가능하다.
		for (int i=10; i >= 1; i--) { 	
			System.out.println(i);
			
			try {
				Thread.sleep(1000);//1초동안 잠시 멈춘다.
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

☆멀티쓰레드를 활용한 카운트 처리

  • 단일쓰레드로 하지못한 카운트다운을 할 수 있다.
  • public static boolean inputcheck = false;
    : 입력여부 확인하기 위한 변수 선언 및 모든 쓰레드에서 공통으로 사용
public class T06_ThreadTest {
	//입력여부를 확인하기 위한 변수 선언
	//모든 쓰레드에서 공통으로 사용할 변수
	public static boolean inputcheck = false;
	
	public static void main(String[] args) {
		Thread th1 = new DataInput(); //아래 데이터 입력 받은 스레드
		Thread th2 = new CountDown(); // 아래 카운트 다운 스레드
		
		th1.start();
		th2.start();
		
	}
}

데이터를 입력받는 쓰레드

class DataInput extends Thread{
	@Override
	public void run() {
		String str = JOptionPane.showInputDialog("아무거나 입력하세요");
		System.out.println("입력한 값은 "+ str +"입니다.");
		
		//입력이 완료되면 inputCheck변수를 true로 변경한다.
		T06_ThreadTest.inputcheck = true; // true로 바뀜으로써 프로그램이 끝난걸 알 수 있다.
	}
}

카운트다운 처리를 위한 쓰레드 클래스

class DataInput extends Thread{
	@Override
	public void run() {
		String str = JOptionPane.showInputDialog("아무거나 입력하세요");
		System.out.println("입력한 값은 "+ str +"입니다.");
		
		//입력이 완료되면 inputCheck변수를 true로 변경한다.
		T06_ThreadTest.inputcheck = true; // true로 바뀜으로써 프로그램이 끝난걸 알 수 있다.
	}
}
profile
HI :)

0개의 댓글