24일차 강의 정리


스레드


소스1

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
34
35
36
class Pm01 extends Thread{        //Thread 상속
    @Override
    public void run(){
        for (int i = 0; i < 6; i++) {
            try {
                Thread.sleep(1000);    //1000분의 1초 휴식->1초
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("스레드로 실행");
        }
    }
}
 
public class Ex01 {
 
    public static void main(String[] args) {
        // 스레드
        System.out.println("main start");
        Pm01 pm01 = new Pm01();
        pm01.start();        //새로운 스레드로  run()실행
        pm01 = new Pm01();    //새로운 객체
        pm01.start();        //새로운 스레드로  run()실행
        
        for (int i = 0; i < 6; i++) {
            try {
                Thread.sleep(1000);     //휴식->1초
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("main i : "+i);
        }
        System.out.println("main end");
        
    }//main end
}//class end
cs

결과1

소스2

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
public class Ex02 extends Thread{
 
    public static void main(String[] args) {
        System.out.println("main start");
        Ex02 me = new Ex02();    //이객체를 통한 두번째 스레드
        me.start();                //run()이 실행
        for (int i = 0; i < 10; i++) {
            try{
                Thread.sleep(1000);
            }catch(InterruptedException e){
                e.printStackTrace();
            }
            System.out.println("main() i: "+i);
        }
        System.out.println("main end.....");
 
    }
    @Override
    public void run(){    //main 에서 실행해서 run을 스레드로 사용
        for (int i = 0; i < 10; i++) {
            try{
                Thread.sleep(1000);
            }catch(InterruptedException e){
                e.printStackTrace();
            }
            System.out.println("new Ex02 thread run() i: "+i);
        }
        System.out.println("run end...........");
    }
}
cs

결과2

소스3

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
class Pm44 extends Thread{
    public Pm44(String name) {
        super(name);
    }
    @Override
    public void run() {
        for(int i=0; i<5; i++){
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(this.getName());
        }
    }
}
 
class Pm04 implements Runnable {    //인터페이스로 상속받아서 스레드 사용하기
 
    @Override
    public void run() {
        for(int i=0; i<5; i++){
            try {
                Thread.sleep(1000);        //해당 스레드를 1/1000잠시 휴식(1s)
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            Thread thr = Thread.currentThread();
            System.out.println(thr.getName());
        }
    }
    
}
 
public class Ex04 {
 
    public static void main(String[] args) {
        Pm04 pm4 = new Pm04();
        Thread thread = new Thread(pm4,"스레드 추가");        //""가 변경된 스레드 이름
        thread.start();
        Pm44 pm44 = new Pm44("상속을 통한");
        pm44.start();
        for(int i=0; i<5; i++){
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
//            System.out.println(Thread.currentThread());        //[스레드명, 스케줄링, ..?뭔단?]
            System.out.println(Thread.currentThread().getName());
        }
    }
 
}
cs

결과3



'* Programming > JAVA' 카테고리의 다른 글

DAY25 IO  (0) 2016.08.11
DAY25 스레드 스케줄링&동기화  (0) 2016.08.08
DAY24 제네릭2(메소드제네릭,와일드카드)  (0) 2016.08.08
DAY23 제네릭1  (0) 2016.08.08
DAY22 큐&스택  (0) 2016.08.04

+ Recent posts