비버놀로지

[JAVA] 쓰레드의 구현과 실행 본문

LANGUAGE STUDY/JAVA

[JAVA] 쓰레드의 구현과 실행

KUNDUZ 2020. 8. 23. 18:34
728x90
  • 쓰레드는 일반적으로 Runnable 인터페이스를 구현하는 방법과 Thread 클래스를 상속받는 2가지 방법으로 만들 수 있다.
  • Runnable 인터페이스의 구현

- 먼저 Runnable 인터페이스를 구현하는 방법부터 알아보자. Runnable에는 run() 메서드 하나가 존재하고 이 메서드를 오버라이딩 해서 필요한 내용을 작성한다. 일반적인 자바 프로세스의 출발점이 main() 메서드인데 반해 스레드의 출발점은 바로 이 run() 메서드이다.

public class Test03 implements Runnable{ //Runnable 매서드를 상속받는다.

	@Override
	public void run() {
		// TODO Auto-generated method stub
		System.out.println("temp thread start!!"); //수행할 작업을 적는다.
	}
	
	public static void main(String[] args) {
		
		System.out.println("main thread start!!");
		
		Test03 t= new Test03();
		Thread thread=new Thread(t); //Test03은 쓰레드가 아닌 Runnable을 상속만 받은 것이기 때문에 쓰레드로 만들어 준다.
		thread.start(); //실행은 run이 아닌 start로 한다!!
		
		System.out.println("main thread finish");
	}

}

 

  • 출력값 확인하기!!

main thread start!!
main thread finish
temp thread start!!

 

- 위와 같이 main thread가 시작하고나서 temp쓰레드가 수행하고 main 쓰레드가 끝나는 구조가 아닌 동시에 작용하는 것을 알 수 있다. 그래서 메인 쓰레드가 끝이났다고 temp 쓰레드가 끝이 나는것이 아닌 둘 다 끝이 나야 실행이 끝이 난다. 그리고 만약에 메인 쓰레드에 딜레이를 줄 경우 temp가 중간에서 확인하게 할 수도 있다.

 

  • Thread 클래스 상속

- Thread 클래스는 Runnable을 구현하고 있다. 따라서 별도로 Runnable 객체를 파라미터로 넣을 필요 없이 Thread 클래스만 가지고 스레드를 만들 수 있다.

 

public class Test04 extends Thread{  //쓰레드를 상속받는다.
	
	public void run(){
		
		System.out.println("쓰레드 실행!!"); //수행할 작업을 적는다.
		
	}
	public static void main(String[] args) throws InterruptedException {
		
		System.out.println("메인 쓰레드 실행!!");
		
		Test04 t=new Test04();
		
		t.start(); //따로 쓰레드를 만들 필요없이 바로 시작!!
		
		Thread.sleep(1000); //1초간 딜레이를 준다.
		System.out.println("메인 쓰레드 종료!!");
	}

}

 

메인 쓰레드 실행!!
쓰레드 실행!!
메인 쓰레드 종료!!

 

- 위와 같이 딜레이를 통해 순서대로 보여지게 할 수 있다. 하지만 임시방편일 뿐 동시에 작업하기 때문에 작업량이 커질 수록 결과값은 섞여서 나오게 된다.

 

 

 

728x90

'LANGUAGE STUDY > JAVA' 카테고리의 다른 글

[JAVA] JDBC의 Statement 와 Prepared Statement  (0) 2020.08.23
[JAVA] JDBC의 개념과 구조  (0) 2020.08.23
[JAVA] 프로세스와 쓰레드  (0) 2020.08.23
[JAVA] StringBuilder 클래스  (0) 2020.08.23
[JAVA] StringBuffer 클래스  (0) 2020.08.23
Comments