새 스레드를 만들려면 클래스를 확장하는 대신 Runnable
인터페이스를 사용하는 것이 가장 좋습니다. 이것이 사실이라면, 왜 Java는 심지어 우리가 Thread
클래스를 확장하도록 허용합니다. 왜 안되니? final
?스레드 및 실행 가능
답변
제작하고있는 것이 거의 확실한 스레드가 아니기 때문에. 그것은 ThingTheDoesSomeUsefulWork
이고, 당신은 그것이 유용한 스레드를 별도의 스레드에서 수행하기를 원할 것입니다. 30 초마다 웹 서버를 폴링하는 것을 쓰고 있다고 가정 해 봅시다. ThingThatPollsWebServer
은 (는) 스레드입니까? 아니면 웹 서버를 폴링하는 것일뿐입니다.
게다가, Runnable
을 만들면 테스트하기가 쉬워지고 스레드를 사용하지 않고 실행 프로그램 프레임 워크를 사용하여 작업을 실행할 수있는 유연성을 제공합니다.
이 질문에 대한 대답은 무엇입니까? Runnable 인터페이스를 옹호하는 것만 보입니다. Thread를 확장하는 것은 어떻습니까? –
네, 할 일이 옳기 때문에! 스레드의 동작을 특수화하려면 스레드 만 확장하십시오. – dty
스레드의 동작을 변경하거나 기능을 추가 할 수 있습니다. 이 경우 Thread 클래스를 확장하는 것이 가장 적합합니다.
정확합니다. 인용 된 진술은 무조건적으로 진실이 아니기 때문에 그것을 사실로 받아들이고 왜'Thread' 클래스 디자인이 그것을 따르지 않는지 궁금해합니다. – erickson
네 말이 맞아. 그러나'Thread'가 서브 클래 싱되어 얼마나 자주'run'을 구현하지 않는지 얼마나 자주 보십니까? –
btw, '클래스'또는 '문자열'의 동작을 변경하려면 어떻게해야합니까? 아닙니다. 그건 나쁜 논리 야. –
스레드를 사용하는 것은 이전 스레드 (java 5.0 이전)에서 스레드를 사용하는 방법이었습니다 :). ExecutorService 클래스를 살펴보십시오.
- 1. 자바 스레드 확장 실행 가능 상태
- 2. NetBeans 및 실행 가능 JAR
- 3. 취소 가능 스레드
- 4. 스레드 실행 가능 여부 또는 수업? 백그라운드에서 스레드를 실행하는 방법?
- 5. VB6 실행 가능 파일
- 6. 변환 가능 유형 및 NSValueTransformer 실행
- 7. 패치 실행 가능 파일?
- 8. 병렬 호출 실행 가능
- 9. 스레드 및 비 스레드 함수 호출의 실행 순서는 무엇입니까?
- 10. OpenMP - 청크에서 스레드 실행
- 11. C++ 실행 가능 배포 전략
- 12. Java에서 다중 스레드 실행
- 13. 연속 스레드 실행
- 14. 인스턴스 변수는 실행 스레드
- 15. 정렬 된 실행 스레드
- 16. 닷넷 스레드 실행
- 17. 실행 - 루프와 스레드
- 18. Java에서 다중 스레드 실행
- 19. NullPointerException 스레드 실행 메서드
- 20. 스레드 실행 지연 + Android
- 21. C++ 스레드 실행 시간
- 22. 우분투 실행 가능 JAR (NetBeans)
- 23. vb.net vs2008 빈 실행 가능
- 24. cruisecontrol.net의 필수 실행 가능 태스크
- 25. 실행 가능 이미지 차단 (PHP)
- 26. 특정 시간에 자바 스레드 실행
- 27. 스레드 및 스레드 스타트
- 28. Java Swing long 스레드 실행
- 29. 임의의 복제 가능 데이터를위한 스레드 안전 홀더
- 30. 스레드 및 CPU 선호도
가능한 복제본 [ "implements Runnable"대 "extends Thread"대] (http://stackoverflow.com/questions/541487/implements-runnable-vs-extends-thread) –