반응형
package dayday17;
import javax.swing.JOptionPane;
/*
* <Thread : 실>
* - 프로그램의 흐름
* - 지금까지의 프로그램은 single-thread 방식
* - 멀티 스레드 : 하나의 스레드가 여러 흐름을 병렬처리하는것을 의미
*
*
* <멀티스레드 구현>
* 1. Class생성시 extends Thread / 혹은 implements Runnable을 구현
* 2. run() 메소드를 오버라이드
* - 쓰레드가 해야할 작업을 구현
* 3. 쓰레드를 추가하고 시점에 해당 클래스를 객체생성하고 ,
* start()를 호출함.
*
*/
class Timer extends Thread {
@Override
public void run() {
int i = 1;
while (i != 11) {
try {
System.out.println((i++) + "초 경과");
Thread.sleep(1000);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// TODO Auto-generated method stub
}
}
class InputMess extends Thread {
@Override
public void run() {
// TODO Auto-generated method stub
}
}
public class test01 {
public static void main(String[] args) {
/*
* 1. 10초 세기 (thread.sleep(1000) * 10) + 2. jop문자열아무거나 입력 +출력
*/
Timer t = new Timer();// 객체화
// InputMess ii = new InputMess();
// t,i를 데몬스레드로 설정
t.setDaemon(true);
// ii.setDaemon(true);//이러면 스레드가 돌지않고 끝난
t.start(); // 실제 실행시 사용
// ii.start(); //메인메소드가 끝나도 계속 실행중이다. -> deamon thread방식(보조 스레드)
// -> 여러개 생성 -> 컬렉션사용
String mess = JOptionPane.showInputDialog("입력");
System.out.println(mess);
System.out.println("프로그램 종료");// 가장 먼저 보여진다.
/*
* 주의점 : 멀티 스레드는 메인스레드가 종료되도 나머지 스레드들은 자동종료되지 않는다. 프로그램이 종료되도 스레드는 살아있다.
* 나머지 스레드들은 메인스레드의 데몬스레드로 설정하면 된다. -> start()호출전 setDeamon(true);
* 보조스레드가 종료되고 메인스레드가 종료시 프로그램이 종료된다.
*
*/
/*
* ////////////////////////////////////////////////////////////////
* //single thread 방식으로 입력을 진행할 때 시간이 흐르지 않는다.
* //////////////////////////////////////////////////////////////// int
* i = 1; while(i!=11){ try { System.out.println((i++)+"초 경과");
* Thread.sleep(1000); String mess = JOptionPane.showInputDialog("입력");
* System.out.println(mess); } catch (Exception e) { // TODO
* Auto-generated catch block e.printStackTrace(); } }
*/
////////////////////////////////////////////////////////////////
}
}
반응형
'IT > Programming' 카테고리의 다른 글
[JAVA] 사용자 정의 exception class 사용 예제 (0) | 2023.04.20 |
---|---|
[JAVA] Map을 사용한 학생관리프로그램 예제 (0) | 2023.04.20 |
[JAVA] I/O Stream 사용 예제 (0) | 2023.04.20 |
[JAVA] 구구단 문제 시간경과 같이 출력 예제 (0) | 2023.04.20 |
[JAVA] InputDialog를 통해 텍스트파일 저장 사용 예제 (0) | 2023.04.20 |