java 병발 학습 독서 노트 2

2303 단어 executor
Executor 프레임워크 소개
1. Executor 프레임워크는 유연한 스레드 탱크를 제공하여 응용 프로그램이 과부하되어 메모리가 소모되는 것을 방지한다.이것은 생산자-소비자 모델을 바탕으로 하는 것으로 임무를 제출하는 라인은 생산자이고 임무를 집행하는 라인은 소비자이다.
2. 스레드 풀
FixedThreadPool에서 일정한 길이의 스레드 풀을 만듭니다. 작업이 제출될 때마다 스레드를 만듭니다. 최대 길이에 도달할 때까지 스레드 풀은 길이가 변하지 않습니다. (만약 스레드가 예상하지 못한 Exception으로 끝나면 스레드 풀은 새로운 스레드를 보충합니다.)
새 Cached ThreadPool에서 캐시 가능한 스레드 풀을 만듭니다. 현재 스레드 풀의 길이가 처리의 필요를 초과할 때 빈 스레드를 유연하게 회수할 수 있습니다.수요가 증가할 때, 그것은 새로운 라인을 유연하게 추가할 수 있으며, 연못의 길이에 대해 어떠한 제한도 하지 않는다.
새 Single Thread Executor는 작업을 수행하기 위해 유일한 작업자 라인만 만듭니다. 이 라인이 이상하게 끝나면 다른 라인이 대체됩니다.executor는 작업이 작업 대기열에 규정된 순서(FIFO, LIFO, 우선순위)에 따라 실행될 것을 보장합니다.
새 ScheduledThreadPool은 정해진 길이의 스레드 풀을 만들고 정해진 시간과 주기적인 작업 수행을 지원합니다.
3. 서비스 CompletionService 완료
Completion 서비스는 Executor와 BlockingQueue 기능을 통합시켜서, Callable 작업을 실행에 옮긴 다음, 작업 결과가 완전하게 사용될 때 이 결과를 얻을 수 있도록 대기열에 take와poll 방법을 사용합니다.
4、SwingUtilities.invokeAndWait, 이벤트 발송 루트에서 실행 중인 Runnable 작업을 스케줄링할 수 있으며, 현재 루트가 완성될 때까지 차단됩니다. (GUI 루트가 아닌 루트에서만 호출할 수 있으며, 그렇지 않으면 잠금이 사라집니다.)
   SwingUtilities.invokeAndLater, 이벤트 발송 라인에서 실행될 Runnable 작업을 설정할 수 있습니다. (임의의 라인에서 호출할 수 있습니다)
5. Future는 취소 가능한 작업을 처리하도록 설계되어 있기 때문에 작업 처리에 취소 수요가 있을 때 Future를 고려할 수 있다.
6、사라진 자물쇠가 발생하는 원인: 두 개 혹은 여러 개의 라인이 서로 다른 순서로 같은 여러 개의 자물쇠를 얻으려고 시도할 때 발생한다
예:
public class LeftRightDeadLock{
  private Object left = new Object();
  private Object right = new Object();
  
  public void leftRight(){
    synchronized(left){
       synchronized(right){
           doSomething();
       }
    }
  }

  public void rightLeft(){
    synchronized(right){
       synchronized(left){
           doSomething();
       }
    }
  }
}

7. Amdahl의 법칙
Amdahl 법칙은 하나의 시스템에서 병렬화 및 직렬화 구성 요소가 각각 차지하는 비중을 바탕으로 프로그램이 추가 계산 자원을 획득함으로써 이론적으로 얼마나 속도를 낼 수 있는지를 설명한다.F가 직렬화되어 실행되어야 하는 비중인 경우 N은 프로세서 수를 나타내며 스핀다운 공식은 다음과 같습니다.
             SpeedUp <= 1/(F + (1 - F)/N)
8. Lock/ReentrantLock 메커니즘을 만드는 의미
내부 자물쇠는 대부분의 경우 잘 작동하지만 일부 기능상의 한계가 있다. 자물쇠를 가져오기를 기다리는 라인을 중단할 수 없고 자물쇠를 요청하는 데 실패하면 무한히 기다릴 수 밖에 없다.내부 자물쇠는 코드를 가져올 때 풀어야 합니다.이것은 코드를 간소화하여 이상 처리 메커니즘과 좋은 상호작용을 할 수 있다.그러나 어떤 경우에는 더욱 유연한 잠금 메커니즘이 더 좋은 활약도와 성능을 제공한다.

좋은 웹페이지 즐겨찾기