자바 프로그래밍 - Runnable
이 글을 보시기 전에 Thread에 대해서 익혀오시는걸 추천합니다 ^^;
아, extends(상속)과 implements(인터페이스)의 차이점에 대해서도 포스팅 해놓도록 하겠습니다~
[자바-Java]extends와 implements의 차이점 |
요점은! 결국에 Runnable == Thread 라고 하셔도 무방합니다. (퍼퍽..)
죄송합니다. Runnable != Thread(상속)..! 다릅니다. 사용을 잘 구분하셔야되요ㅎ..
단지 같은점은 run()을 정의해야 한다는 것입니다.
이 run은 Thread에서 실행되는 메소드인데 그 run이 Thread를 extends함으로써 @override(오버라이딩)될 것이냐, 또는 Runnable 인터페이스를 구현함으로써 추상메소드를 오버라이딩 할 것이냐에 따라 다른 것입니다.
자, 뭐가 다른가! 몇가지 다른점을 정리합니다.
1. Thread는 상속을 받으며 Runnable은 인터페이스로서 구현한다 2. Thread는 재사용이 불가능하며 Runnable은 가능하다 3. Thread 사용시 다른 클래스를 상속받을 수 없다 (1번과 똑같은 의미겠죠?) 4. Runnable Implements는 보다 객체지향적이다 (독립된 class 선언) 잠깐, 너무 Thread 상속이 안좋은것 같잖아요! 5. Thread 사용시 그 class를 바로 사용할 수 있다. (해당 class의 Method를 사용가능함) - Runnable 사용시 다른 클래스에서 implements를 할 경우 해당 class Method 이용불가 * 하지만 4번 항목과 더불어 객체지향의 특징일 수 있겠죠!? |
자, 자바 Oracle에서는 Runnable을 다음과 같이 정의했습니다.
The - Runnable 인터페이스는 thread에 의해 실행될 class에 implements 되어야한다. 이 클래스는 인자가 없는 run() method를 정의해야 한다. |
여기까지 개략적 설명을 마치고 Thread vs Runnable 예제 하나만 보죠..
- 쓰레드 상속 -
어렵지 않죠, 그럼 이 둘중 애용해야 하는 것은?
음, 사실 답은 없습니다.(이런 문제에 대해서는 조금 조심스러워야되요^^;)
저는 Runnable implements를 주로 사용하지만 편리하기에는(그리고 약간이나마 소스가 짧아지기도 하죠ㅎ) Thread를 상속하는게 더 나을 수도 있어요~ 자, 결과적으로는 우리는 run() 만 잘 채워넣으면 됩니다.
다음 포스팅은 마찬가지로 쓰레드 관련! 동기화를 알아보겠습니다!
[자바-Java]쓰레드, 동기화(Synchronization)와 교착상태(Deadlock) |
'Development > JAVA' 카테고리의 다른 글
[JAVA]Jsoup을 이용한 네이버 사전 추출/파싱기 (0) | 2016.12.14 |
---|---|
[자바]싱글턴 패턴(Singleton Pattern)과 콜백함수(Callback)(1) (0) | 2016.10.29 |
[자바]쓰레드, 동기화(Synchronization)와 교착상태(DeadLock) (0) | 2015.12.31 |
[자바]extends와 implements의 차이점 (1) | 2015.12.21 |
[자바]쓰레드-Thread (0) | 2015.12.19 |