본문 바로가기

IT일반과목/java

쓰레드-1

package jongkyu.thread;


public class Thrread implements Runnable {

//Runnable 인터페이스 구현을 통한 Thread

//Runnable 인터페이스를 구현을 하면 반드시 run을 써줘야 한다.

@Override

public void run() {

System.out.println(Thread.currentThread().getName());

//현재 쓰레드 이름을 알려준다.

//Thread가 static으로 선언이되어있고 현재구동이되고있는 이름가져오기

System.out.println("Thrread");

//현재 클래스 이름을 보여준다.

for(int i=0; i<10; i++) {

System.out.println(i+"번째");

try {

Thread.sleep(500);

//million단위인데 이건 1000초이다.

//500이면 0.5초, 1000이면 1초 ,0.001을곱하면 된다.

//for문안에 0.5초씩 i를 찍는다.

}catch (Exception e) {}

}

}

//run메소드는 쓰레드가 하는 일들이 모여있는 곳이다.

}

----------------------------------------------------------------------------------------------------------------
package jongkyu.run;

import jongkyu.thread.Thrread;
//Runnable 인터페이스 구현을 통한 Thread
public class Run {
public static void main(String[] args) {
Thrread t1 = new Thrread();
//t1으로 객체생성
Thread thread = new Thread(t1,"K");
//자동완성기능보면 runnable있는게있는데 우린 그걸로한다.
//K는 쓰레드의이름을 String 형태로 주었다.
thread.start();
//Thrread의 run메소드를 호출한다.
//thread.run()과 같다.
System.out.println(Thread.currentThread().getName());
System.out.println("MainClass");
}
}
//처음 출력이 되면 main이 뜨는데 이건 public static void main(String[] args)의 main이다.

==============================================================
==============================================================
package jongkyu.thread;

public class Thrread1 extends Thread {
//Thread를 상속받았다.
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
//현재 쓰레드 이름 보여주고
System.out.println("Thrread1");
//클래스이름 보여준다.
for(int i=0; i<10; i++) {
System.out.println(i+"번째");
try {
Thread.sleep(500);
} catch (Exception e) {
// TODO: handle exception
}
}
}
//run메소드는 쓰레드가 하는 일들이 모여있는 곳이다.
}

--------------------------------------------------------------------------------------
package jongkyu.run;

import jongkyu.thread.Thrread1;

public class Run {
public static void main(String[] args) {
Thrread1 t = new Thrread1();
t.setName("A");
t.start();
System.out.println(Thread.currentThread().getName());
System.out.println("MainClass");
}
}

=============================================
=============================================
=============================================

implements일때

start를 하면

1. Thrread 클래스에서 run()으로간다.

2. 쓰레드는 start를 실행을했을때 가긴하지만 다른일도 같이할수있으니 아래로 내려간다.

3. Thread.currentThread().getName()를 호출하고

4. MainClass를 호출후

5. Thrread클래스로간후 Thread.currentThread().getName()가있으니 K라고 표시한다.

6. 그후 Thrread를 보여주고 for문실행



extends일때

이경우에도 같다고 봐도무방한데 상속을해서 그클래스를 건드는 것이다.

setName으로 이름을 설정했고

시작을한후 쓰레드니 아래로바로가서

main

MainClass를 호출후 t.start로간다.

Thrread1에서 쓰레드의이름이 A였으니 보여주고 그아래껄 보여준후 똑같다.

==============================================

===========================================

========================================



'IT일반과목 > java' 카테고리의 다른 글

쓰레드 예제  (0) 2018.08.05
쓰레드-2  (0) 2018.08.05
자바 제너릭 다형성  (0) 2018.08.03
자바 제너릭(Generic)2  (0) 2018.08.03
자바 제너릭(Generic)  (0) 2018.08.03