IT/Programming / / 2023. 4. 20. 13:17

[JAVA] Thread 사용 예제

반응형
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(); } }
		 */
		////////////////////////////////////////////////////////////////
	}
}
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유