2010-02-25 5 views

답변

16

Java 스레드는 사양을 준수하는 방식으로 구현 될 수 있습니다. 사양에는 특정 구현이 필요하지 않습니다.

효과적으로 모든 최신 데스크탑 및/또는 서버 JVM은 Java 스레드를 원시 스레드로 구현합니다. 즉, 각 Java 스레드마다 정확히 1 개의 원시 스레드가 있고 운영 체제가 모든 예약을 수행한다는 것을 의미합니다. 예를 들어 C 프로그램에서와 마찬가지로.

자원이 제한적인 장치의 일부 구형 JVM 및 일부 JVM은 사용 된 원시 스레드 수가 실행중인 Java 스레드 수 (또는 가능하면 1)보다 작은 방식으로 스레드를 구현할 수 있습니다. 이러한 구현은 소위 "녹색 스레드"를 구현한다고합니다. 이 경우 운영 체제에 해당 작업을 위임하는 대신 JVM 자체가 작업 전환 및 예약을 담당합니다.

+0

누구든지 내게이 문제에 대한 참조를 줄 수 있습니까? –

+0

@espertus 소스 코드 참조 HotSpot JVM 구현은 http://openjdk.org에서 찾을 수 있습니다. –

5

물론 JVM의 구현에 따라 다르지만, 나는 동일하다고 생각합니다. 즉, Java의 스레드는 원시 스레드를 통해 구현됩니다. 네이티브 스레드로 할 수있는 모든 종류의 일을 Java 쓰레드에서 기대할 수 있습니다.

0

자바 스레드와 기본 스레드는 완전히 다릅니다. 기본 스레드는 기본 플랫폼 (OS)의 일부입니다.

Java 스레드는 동시성을 지원하는 Java 언어의 기능 중 하나입니다. Java 사양은 API 및 Java 스레드의 기능을 제어합니다. 궁극적으로 Java 스레드는 Java 프로그램의 실행 중에 원시 스레드에 맵핑됩니다. 또한 자바 쓰레드는 네이티브 쓰레드와 일대일로 매핑 될 필요가 없다.

0

Java 스레드 (스레드 클래스 및 Runnable 인터페이스)는 메모리 공유 응용 프로그램의 원시 스레드보다 훨씬 높은 수준의 API입니다. Oaks and Wong이이 책 "Java Threads"를 추천했습니다 http://shop.oreilly.com/product/9780596007829.do. Runnable 인터페이스를 구현하는 것은 일반적인 관행이지만 코드 범위에 따라 다릅니다.