Day 22(8/31) Thread, sleep

2016. 9. 1. 17:00Programming/Java

Thread(쓰레드):

쓰레드는 메모리 공간을 할당받아 별도의 실행흐름 형성

start 메소드(실행할 준비) 호출 후 run 메소드(main 같은 역할)가 호출된다.


**사용하려면..

쓰레드 상속(extends Thread) 혹은 Runnable을 구현(implements)해야 한다.


**join과 sleep

join()을 쓰면 조인된 쓰레드가 모두 실행될 때까지 기다린 후, 다음 쓰레드 실행한다.

sleep(5000)은 5초 동안 정지했다가 다음 쓰레드를 실행한다.


**쓰레드 실행 우선 순위(priority) 설정

MsgThread tr1 = new MsgThread("First", 10);

위와 같은 형태로 상수(1~10)를 넣어 먼저 실행케 할 수 있다.




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
32
33
import java.lang.Thread; //java.lang 패키지 => Object, 기본데이터타입
 
       //=> java를 구현하기 위한 가장 중요한 도구들을 모아 놓은 패키지
      // Thread는 아주 아주 중요한 클래스 => main()이 1thread를 가지기 위해
 
public class L01Thread extends Thread{
     int num;
     public L01Thread(int num){
          this.num=num;
     }
 
 @Override
 public void run() { //run() 실행한 코드를 작성하면 start() 메소드로 쓰레드를 생성한다.
      System.out.println(num+"thread run");
 }
 
public static void main(String[] args) {
      new L01Thread(1).start();
      new L01Thread(2).start();
      new L01Thread(3).start();
      new L01Thread(4).start();
      new L01Thread(5).start();
      new L01Thread(6).start();
      new L01Thread(7).start();
      new L01Thread(8).start();
      new L01Thread(9).start();
      new L01Thread(10).start();
 
      //main 안에 10개의 thread가 생성됨.
      //10의 실행 단위가 동시에 실행.
      //출력이 무작위로 되고 있다.
   }//main end
}//class end
cs




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class ThreadDemo extends Thread{
     int seq;
     public ThreadDemo(int seq){
          this.seq=seq;
     }
     public void run() {
         System.out.println(seq+"thread start");
     try{
          sleep(5000);//5초와 같음
     }catch(InterruptedException e){e.printStackTrace();} //왜 try catch 써야?
     
     System.out.println(seq+"thread end");
   }
}
 
public class L02ThreadSleep {
     public static void main(String[] args) {
     for(int i=0;i<10;i++){
         new ThreadDemo(i).start();
     }
     System.out.println("main thread end");
   }
}
cs



'Programming > Java' 카테고리의 다른 글

JAVA 개념 간단 정리  (0) 2016.09.04
Day 23(9/1) sleep, windowClosing  (0) 2016.09.01
Day 21(8/30) InnerClass, Frame, EventHandler  (0) 2016.09.01
Day 20(8/29) Read(입력 받기)  (0) 2016.08.29
Day 19(8/26) 좌석 예약 시스템  (0) 2016.08.29