-
[JAVA] thread , 쓰레드 만드는 2가지 방법, extends Thread, implements Runnable, 시작지점 종료지점, 차이점WEB/BACK 2021. 4. 24. 10:58반응형
안녕하세요. 오늘은 thread, thread만드는 방법, 시작지점과 종료지점에 대한 포스팅을 시작하겠습니다!
thread 를 구현하는 방법은 크게 2가지가 있다.
첫번째 : thread를 상속 받는 방법 (extends Thread)
두번째 : 인터페이스 구현하는 방법, ( implements Runnable)
첫번째 : thread를 상속 받는 방법 (extends Thread)
(전체코드는 하단에 있음)
1. thread를 직접 상속 받아서 쓰레드를 만들수 있다! (이렇게되면 자바는 다중 상속은 금지이기 때문에 다른 클래스들을 상속 받을 수 없다.)
public class ThreadTest extends Thread {
2. thread가 가지고 있는 run()메소드를 오버라이딩 한다.
public void run() { System.out.println(this.seq + " thread start."); try { Thread.sleep(1000); } catch (Exception e) { } System.out.println(this.seq + " thread end."); }
3. start()호출
Thread t = new ThreadTest(i); t.start();
- 메인이 끝났다고해서 쓰레드가 끝났을거라는 생각은 오산, 테스트 해볼수 있는 코드를 가지고 왔다.
- 종료시점은 언제지?? -> run() 함수의 내용이 모두 끝나면 쓰레드가 종료되는 것이다.
Thread.sleep(1000)
쓰레드 시작하고 1초 쉬었다 종료하는 코드
쓰레드 예시 코드 전체1
- 쓰레드 시작, 메인 끝, 쓰레드 끝
- 주석 풀면 쓰레드 시작, 끝, 그리고 메인 끝
import java.util.ArrayList; public class ThreadTest extends Thread { int seq; public ThreadTest(int seq) { this.seq = seq; } public void run() { System.out.println(this.seq + " thread start."); try { Thread.sleep(1000); } catch (Exception e) { } System.out.println(this.seq + " thread end."); } public static void main(String[] args) { //ArrayList<Thread> threads = new ArrayList<Thread>(); for (int i = 0; i < 5; i++) { Thread t = new ThreadTest(i); t.start(); //threads.add(t); } // for (int i = 0; i <threads.size(); i++) { // Thread t = threads.get(i); // try { // t.join(); // } catch (Exception e) { // } // } System.out.println("main end."); } }
쓰레드 상속 예시 코드 전체2
public class ThreadExample extends Thread { @Override public void run() { System.out.println("Inside : " + Thread.currentThread().getName()); } public static void main(String[] args) { System.out.println("Inside : " + Thread.currentThread().getName()); System.out.println("Creating thread..."); Thread thread = new ThreadExample(); System.out.println("Starting thread..."); thread.start(); } }
두번째 : 인터페이스 구현하는 방법, ( implements Runnable)
오버로딩하여 만들었기 때문에 다른 클래스를 상속 받아서 쓸수도있고 재사용할 수 있다.
즉,
1. run()메소드를 오버라이드하여 구현
@Override public void run() { System.out.println("Inside : " + Thread.currentThread().getName()); }
2. 별도의 thread를 생성해주고
Runnable runnable = new RunnableExample();
3. 구현한 Runnable인터페이스를 인자로 넘겨주어야 한다.
Thread thread = new Thread(runnable);
전체 코드
public class RunnableExample implements Runnable { public static void main(String[] args) { System.out.println("Inside : " + Thread.currentThread().getName()); System.out.println("Creating Runnable..."); Runnable runnable = new RunnableExample(); System.out.println("Creating Thread..."); Thread thread = new Thread(runnable); System.out.println("Starting Thread..."); thread.start(); } @Override public void run() { System.out.println("Inside : " + Thread.currentThread().getName()); } }
thread , 쓰레드 만드는 2가지 방법, extends Thread, implements Runnable, 시작지점 종료지점, 차이점 포스팅 끝. 도움이 되었길 바라며, 그럼 이만 다음 포스팅에서.
반응형'WEB > BACK' 카테고리의 다른 글