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 |