자바 멀티 스레딩 인터뷰

1, 멀티 스레드 사용은 무엇인가?

  멀티 코어 CPU (1)의 인출 이점 :

  그 후, 4 심 CPU 낭비 50 % 낭비되는 듀얼 코어 CPU에, 단일 스레드 프로그램의 경우 현재 상기 어플리케이션 서버는 듀얼 코어, 4 코어, 8 코어 16 코어도 드물지 않다 적어도 또한 75 %. 소위 단일 코어 CPU에 "멀티 스레드"즉, 멀티 스레드 거짓 , 프로세서는 논리의 같은 기간 처리하지만, 더 빨리 "동시에"여러 스레드처럼 보였다, 스레드 사이의 전환보다는 것이다 베일을 실행합니다. 멀티 코어 CPU에 멀티 스레딩하는 진정한 다중 스레드 ,이 같은 논리 멀티 세그먼트에서 작업 할 수 있으며, 멀티 스레드, 정말 CPU의 전체 사용의 목적을 달성하기 위해 멀티 코어 CPU의 장점을 재생할 수 있습니다.

       (2) 방해를 방지 :

  이 컨텍스트 스위치 스레드 이어질 및 단일 코어 CPU에 프로그램의 전반적인 효율성을 줄일 수 있기 때문에 운영 효율성의보기의 절차 적 관점에서, 싱글 코어 CPU는 멀티 스레드, 멀티 스레드 실행의 장점을 재생되지 않습니다 . 그러나 우리는 여전히 멀티 스레드 애플리케이션에이 싱글 코어 CPU, 그것은 것입니다 막힘을 방지 . 단일 코어 CPU가 단일 스레드를 사용하는 경우 그냥 생각, 너무 오래이 스레드가 차단 될 때, 당신은 다음, 데이터는 원격 피어가 아직 반환되지 않았으며 정해진 시간 제한 (예 : 많은 시간을 소비 할 수있는 데이터베이스에 대한 액세스로) 읽어 말 데이터 이전 전체 프로그램은 실행을 중지 다시 반환됩니다. 이 문제를 코드 실행 스레드가 데이터를 차단 읽을 경우에도 동시에 실행하는 스레드의 수를 방지 할 수 있습니다 멀티 스레딩, 다른 작업의 실행에 영향을 미치지 않습니다.

2, 스레드 방식을 만듭니다

  그것은 두 가지 방법으로 일반적으로 :

  (1) 스레드 클래스 상속

  (2)의 Runnable를 구현

  어느에 관해서 때문에, 더 나은 후자는 확실히 좋은 물론이다 (자바는 여러 개의 인터페이스를 구현할 수 있지만 클래스 상속 할 수 있습니다) 방법이 더 유연한 방법으로 상속 된 클래스보다 인터페이스의 구현 뿐만 아니라 프로그램 사이의 결합의 정도를 줄이기 위해, 또한 지향 프로그래밍 인터페이스 디자인 패턴 여섯 개 핵심 원칙.

구분 3, start () 메서드와 run () 메소드

  만 다중 스레드, 다른 스레드 실행 () 메소드의 코드는 내부 번갈아 실행의 특성을 나타내는 것, 시작 () 메서드를 호출합니다.

  그냥 run () 메소드를 호출하면 코드는 동 기적으로 실행됩니다.

(4) 호출 가능한 인터페이스와의 Runnable 인터페이스 차이점

  반환 값의 Runnable 인터페이스를 () 메소드는 단지의 run () 메소드의 코드를 수행하기 위해 순수하게 그것을 할, 무효 실행;

  가치 호출 인터페이스 () 메소드를 호출 복귀하면 일반이며, 미래에는, FutureTask는 비동기 실행 결과를 얻기 위해 사용될 수있다. 사실, 이것은 유용한 기능은, 때문에 단일 스레드 멀티 스레드 더 열심히 더 중요한 이유이다 비해 알 수없는 섹스의 전체 복잡한 다중 스레드 때문에 특정 스레드 여부? 일부 스레드는 얼마나 오래 실행? 우리는 데이터를 기대하는 과제의 실행은 특정 스레드 여부 완료되면? 알고 아니, 우리는이 멀티 스레드 작업을 완료 기다려야한다 할 수 있습니다. 당신이 필요한 데이터를 얻기 위해 너무 오래 기다릴 수 없어, 스레드 작업이 경우 호출 가능 + 미래 / FutureTask 정말 유용 취소하지만 당신은 여러 스레드를 실행의 결과를 얻을 수 있습니다

5 차분으로 CyclicBarrier 및 CountDownLatch를

추천

출처www.cnblogs.com/liufei1983/p/11809006.html