자바 Thread를 만드는 방법은 크게 두가지가 있습니다.
1) extends Thread
2) implements Runnable
오늘은 Thread를 상속해서 만드는 방법을 포스팅하겠습니다.
1. 쓰레드를 만들 class 파일을 하나 만들고 다음과 같이 코딩
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | public class MyThread1 extends Thread { String str; public MyThread1(String str) { this.str = str; } @Override public void run() { // TODO Auto-generated method stub for(int i=0;i<10;i++) { System.out.println(str); try { Thread.sleep((int)Math.random()*1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } | cs |
MyThread1클래스는 main은 없고 run 이란 메소드가 있습니다.
run 메소드는 MyThread1라는 객체가 실행이 될때 작동시키는 역할을 합니다.
실행은 start() 메소드를 통해 실행됩니다.
2. 쓰레드를 실행시킬 메인을 만들기 위한 class 파일을 생성 및 다음과 같이 코딩
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public class ThreadExam { public static void main(String[] args) { MyThread1 t1 = new MyThread1("*"); MyThread1 t2 = new MyThread1("-"); t1.start(); t2.start(); System.out.println("main end!!!"); //start는 준비를 하게 해주는 메소드 //run은 실행할 준비가 시작이 되면 실행됨 //메인스레드가 종료됬다고 해서 프로그램이 종료되는것이 아니다. //모든 스레드가 종료되어야지 프로그램이 종료되는것이다. } } | cs |
위에서 run() 메소드는 start() 메소드를 사용해서 실행할수 있다고 했습니다.
start()의 역할은 thread를 실행하기전 준비할수 있도록 해주는 역할을 하고
run()의 역할은 thread가 실행할 준비가 되면 실행시켜주는 역할을 합니다.
<출력결과>
자바 쓰레드는 크게 메인쓰레드와 서브쓰레드로 나누어집니다.
메인쓰레드의 경우 클래스에 있는 main을 생각하시면 되고
서브쓰레드의 경우 개발자가 만든 쓰레드라고 생각하시면 됩니다.
쓰레드를 실행시켰을때 메인쓰레드가 우선순위가 되기 때문에 출력값에 main end!! 가
먼저 찍히게 되고 서브 클래스들은 번갈아 가면서 쓰레드를 실행하기 때문에
위와 같은 결과가 나오게 됩니다.
'프로그래밍 > 자바' 카테고리의 다른 글
일반적인 인터페이스란? (0) | 2018.12.21 |
---|---|
상속을 왜 많이 하면 안좋은가? (0) | 2018.12.21 |
자바 어노테이션(Annotation) 만들기 (0) | 2018.08.23 |
자바 파일 입출력 I/O 심화!! (1) | 2018.08.21 |
자바 파일 입출력 실습!! (0) | 2018.08.21 |