우리는 Java에서는 멀티 스레드를 달성하는 두 가지 수단이 있으며, 하나는 스레드 클래스를 계속하고 다른 하나는 실행 가능한 인터페이스를 구현하는 것입니다.
1. 프로세스와 스레드의 차이점은 무엇입니까?
프로세스는 실행 애플리케이션이며 스레드는 프로세스 내에서 실행 시퀀스입니다. 하나의 프로세스에는 여러 스레드가있을 수 있습니다. 스레드를 가벼운 프로세스라고도합니다.
2. 스레드를 만들기위한 몇 가지 방법이 있습니까? 어느 것을 좋아합니까? 왜?
스레드를 만드는 세 가지 방법이 있습니다.
(1) 스레드 클래스 상속 (2) 런닝 가능한 인터페이스 구현 (3) 응용 프로그램은 실행 가능한 인터페이스를 달성하기 위해 실행 풀을 만들어 스레드 클래스가 필요하지 않기 때문에 더 인기가 있습니다. 다른 객체를 상속 한 응용 프로그램 설계에서는 더 많은 상속이 필요합니다 (및 Java는 더 많은 상속을 지원하지 않으며 인터페이스 만 달성 할 수 있습니다. 동시에, 스레드 풀은 매우 효율적이고 달성하고 사용하기 쉽습니다.
3. 스레드 사용에 대한 요약 설명.
실행 프로세스 중에 스레드는 다음 상태 일 수 있습니다.
실행 가능 : 스레드가 실행될 준비가되었으며 즉시 실행되지 않을 수 있습니다.
실행 : 프로세스는 스레드의 코드를 실행하고 있습니다.
대기 : 실은 장애물 상태에 있으며 외부 치료를 기다리고 있습니다.
수면 : 실은 잠을 자야합니다.
I/O 블록 (I/O에서 차단) : I/O 작동 대기.
동기화에 차단 : 잠금을 기다리십시오.
죽음 : 실이 실행됩니다.
4. 동기화 방법과 동기 코드 블록의 차이점은 무엇입니까?
Java 언어로서 각 객체에는 잠금이 있습니다. 스레드는 동기화 된 키워드를 사용하여 객체의 잠금을 얻을 수 있습니다. 동기화 된 키워드는 메소드 레벨 (거친 과립 잠금) 또는 코드 블록 레벨 (미세 입자 크기 잠금)에 적용 할 수 있습니다.
5. 모니터 (모니터)에서 스레드 동기화는 어떻게됩니까? 프로그램은 어떤 수준의 동기화를해야합니까?
모니터와 잠금은 Java 가상 머신에서 사용됩니다. 모니터는 동기 코드 블록을 모니터링하여 한 번에 동기 코드 블록을 실행할 스레드가 하나만 있는지 확인합니다. 각 모니터는 객체 참조와 관련이 있습니다. 스레드는 잠금을 얻기 전에 실행 동기화 코드를 허용하지 않습니다.
6. 교착 상태 란 무엇입니까?
두 프로세스 모두 상대방이 계속 실행되기 전에 다른 당사자가 실행되기를 기다리고 있습니다. 결과적으로 두 프로세스 모두 무제한 대기 중입니다.
7. N 스레드가 N 리소스에 액세스 할 수 있도록하는 방법으로 죽은 자물쇠로 이어지지 않도록하는 방법은 무엇입니까?
여러 스레드를 사용하는 경우 데드 잠금 장치를 피하는 매우 간단한 방법은 잠금을 얻는 순서를 지정하는 것입니다. 따라서 모든 스레드가 잠겨서 동일한 순서로 릴리스되면 데드 잠금 장치가 없습니다.