2020.10.28 고급자바 수업노트 Thread 카운트다운(countdown + 숫자입력)

 import javax.swing.JOptionPane;


public class ThreadTest05 {


public static void main(String[] args) {

String str = JOptionPane.showInputDialog("아무거나 입력하세요"); 

            // JOptionPane.showInputDialog() 

            화면에 창이 뜨고 그것에 입력한 내용이 변수로 나온다.


System.out.println("입력한 값 : " + str);

for(int i = 10; i >= 1; i--) {

System.out.println(i);

try {

Thread.sleep(1000);   //1초 동안 잠시 멈춘다. 

} catch (InterruptedException e) {

}

}


}


}


설명 : Thread 로 주지 않았기 때문에 값을 입력하다고 하고 그 다음에 for 문으로 돌아간다. 따라서 순서대로 나오는것 . 동시에 입력할때 카운트 다운이 세지려면 Thread 를 사용해야 한다. 


-----------------------------------------------------------------------------------------------------

package kr.or.ddit.basic;


import javax.swing.JOptionPane;


public class ThreadTest06 {


public static void main(String[] args) {

Thread th1 = new DataInput(); 

Thread th2 = new CountDown(); 

th1.start();

th2.start();


}


}





//데이터를 입력하는 쓰레드 

class DataInput extends Thread{

//입력 여부를 확인하기 위한 변수 선언 ==> 쓰레드에서 공통으로 사용할 변수 

// 

public static boolean inputCheck; 

공동으로 사용하려고 하기 때문에 ( DataInput Thread 에서도 , CountDown Thread 에서도 ) 

@Override

public void run() {

String str = JOptionPane.showInputDialog("아무거나 입력하세요."); 

inputCheck = true; 

System.out.println("입력한 값 : " + str);

}

}



//카운트 다운을 진행하는 쓰레드 


class CountDown extends Thread {

@Override

public void run() {


for(int i = 10 ; i >=1 ; i--) {

//입력이 완료되었는지 여부를 검사해서 입력이 완료되면 쓰레드를 종료시킨다. 

if(DataInput.inputCheck == true) {

return;  //메소드가 끝날때 return 을 준다.  //run () 메서드가 종료되면 해당 쓰레드로                        종료된다. 

}

System.out.println(i);

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

}

}

System.out.println("10초가 지났습니다. ");

System.exit(0);


}





}

















댓글