728x90
반응형
쓰레드 구현 및 실행
쓰레드를 구현하는 Thread클래스를 상속받는 방법과 Runnable인터페이스를 구현하는 방법 2가지가 있습니다. Thread클래스를 상속받으면 다른 클래스를 상속받을 수 없기 때문에 일반적으로
Runnable인터페이스로 구현하는 방법이 일반적입니다.
※ Runnable인터페이스로 구현할 경우 Runnable인터페이스를 구현한 클래스의 인스턴스를 생성한 다음 이 인스턴스를 가지고 Thread클래스의 인스턴스를 생성할 때 생성자의 매개변수로 제공해야합니다.
123456 // Thread클래스를 상속class MyThread extends Thread{ public void run(){ /* 작업내용 */ // Thread클래스의 run()을 오버라이딩 }} cs
123456 // Runnable인터페이스를 구현class MyThread implements Runnable{ public void run(){ /* 작업내용 */ // Runnable인터페이스의 추상메서드 run()을 구현 }} cs
12345678910111213141516171819202122232425262728 // Thread클래스를 이용한 쓰레드 구현 예제class ThreadEx{ public void main(String args[]{ ThreadEx1 t1 = new ThreadEx1(); ThreadEx1 t2 = new ThreadEx1(); // 쓰레드 실행 t1.start(); t2.start(); }} class ThreadEx1 extends Thread{ public void run(){ for(int i=0; i<3; i++){ System.out.println(getName()); // 조상인 Thrad의 getName()을 호출 } }} /* 결과값 - 쓰레드는 각각 실행되므로 0과 1의 순서는 바낄 수 있음 Thread-0 Thread-0 Thread-0 Thread-1 Thread-1 Thread-1*/ cs
1234567891011121314151617181920212223242526272829303132 // Runnable인터페이스를 이용한 쓰레드 구현 예제class ThreadEx{ public void main(String args[]{ Runnable r = new ThreadEx2(); Thread t1 = new Thread(r); Thread t2 = ne Thread(r); // 쓰레드 실행 t1.start(); t2.start(); }} class ThreadEx1 implements Runnable{ public void run(){ for(int i=0; i<3; i++){ // 현재 실행중인 Thread를 반환 System.out.println(Thread.currentThread().getName()); /* Runnable인터페이스로 쓰레드를 구현하면 getName()을 직접 호출할 수 없으며, static메서드인 currentThread()를 이용하면 getName()을 호출할 수 있습니다. */ } }} /* 결과값 - 쓰레드는 각각 실행되므로 0과 1의 순서는 바낄 수 있음 Thread-0 Thread-0 Thread-0 Thread-1 Thread-1 Thread-1*/ cs
12345678910111213141516 // Thread클래스public class Thread{ private Runnable r; public Thread(Runnable r){ this.r = r; } public void run(){ if(r!= null) r.run // Runnable인터페이스를 구현한 인스턴스 run()을 호출 }} Thread(Runnable target, String name)Thread(String name)void setName(String name) cs
[출처] [java] 쓰레드 구현 및 실행|작성자 Simpolor
쓰레드를 구현하는 Thread클래스를 상속받는 방법과 Runnable인터페이스를 구현하는 방법 2가지가 있습니다. Thread클래스를 상속받으면 다른 클래스를 상속받을 수 없기 때문에 일반적으로
Runnable인터페이스로 구현하는 방법이 일반적입니다.
※ Runnable인터페이스로 구현할 경우 Runnable인터페이스를 구현한 클래스의 인스턴스를 생성한 다음 이 인스턴스를 가지고 Thread클래스의 인스턴스를 생성할 때 생성자의 매개변수로 제공해야합니다.
1 2 3 4 5 6 | // Thread클래스를 상속 class MyThread extends Thread{ public void run(){ /* 작업내용 */ // Thread클래스의 run()을 오버라이딩 } } | cs |
1 2 3 4 5 6 | // Runnable인터페이스를 구현 class MyThread implements Runnable{ public void run(){ /* 작업내용 */ // Runnable인터페이스의 추상메서드 run()을 구현 } } | cs |
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 | // Thread클래스를 이용한 쓰레드 구현 예제 class ThreadEx{ public void main(String args[]{ ThreadEx1 t1 = new ThreadEx1(); ThreadEx1 t2 = new ThreadEx1(); // 쓰레드 실행 t1.start(); t2.start(); } } class ThreadEx1 extends Thread{ public void run(){ for(int i=0; i<3; i++){ System.out.println(getName()); // 조상인 Thrad의 getName()을 호출 } } } /* 결과값 - 쓰레드는 각각 실행되므로 0과 1의 순서는 바낄 수 있음 Thread-0 Thread-0 Thread-0 Thread-1 Thread-1 Thread-1 */ | cs |
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 | // Runnable인터페이스를 이용한 쓰레드 구현 예제 class ThreadEx{ public void main(String args[]{ Runnable r = new ThreadEx2(); Thread t1 = new Thread(r); Thread t2 = ne Thread(r); // 쓰레드 실행 t1.start(); t2.start(); } } class ThreadEx1 implements Runnable{ public void run(){ for(int i=0; i<3; i++){ // 현재 실행중인 Thread를 반환 System.out.println(Thread.currentThread().getName()); /* Runnable인터페이스로 쓰레드를 구현하면 getName()을 직접 호출할 수 없으며, static메서드인 currentThread()를 이용하면 getName()을 호출할 수 있습니다. */ } } } /* 결과값 - 쓰레드는 각각 실행되므로 0과 1의 순서는 바낄 수 있음 Thread-0 Thread-0 Thread-0 Thread-1 Thread-1 Thread-1 */ | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | // Thread클래스 public class Thread{ private Runnable r; public Thread(Runnable r){ this.r = r; } public void run(){ if(r!= null) r.run // Runnable인터페이스를 구현한 인스턴스 run()을 호출 } } Thread(Runnable target, String name) Thread(String name) void setName(String name) | cs |
[출처] [java] 쓰레드 구현 및 실행|작성자 Simpolor
728x90
반응형
'JAVA > JAVA 스레드' 카테고리의 다른 글
[java] 쓰레드 그룹 (0) | 2017.11.01 |
---|---|
[java] 쓰레드의 우선순위 (0) | 2017.11.01 |
[java] 싱글쓰레드와 멀티쓰레드 (0) | 2017.11.01 |
[java] start()와 run() (0) | 2017.11.01 |
[java] 프로세스와 쓰레드 (0) | 2017.11.01 |
Executor,ExecutorService,ThreadPoolExecutor (0) | 2016.03.09 |
스레드풀(CompletionService)을 이용하여 작업실행하기 (0) | 2016.03.09 |
자바 쓰레드 동기화 (syncronized 키워드 사용하기) (0) | 2016.03.09 |