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);
}
}
댓글
댓글 쓰기