「Java 언어로 배우는 디자인 패턴 (멀티 스레드 편)」정리 (그 2)



멀티스레드 프로그램 평가 기준



안전성



안전성이란, 오브젝트를 파괴하지 않는 것. 깨진 것은 종종 객체의 필드가 예기치 않은 값을 취하는 것에 해당합니다. 예를 들어, 은행 계좌의 예금 잔액이 마이너스가 되었다고 하면, 은행 계좌를 나타내는 오브젝트가 망가졌다. 복수의 thread가 이용해도 안전성이 유지되는 클래스를 thread 세이프인 클래스라고 부른다.

생존성



생존성이란, 필요한 처리는 하나인가 반드시 행해지는 것. 안전성과 생존성은 상반되는 요구가 될 경우가 있다. 그 전형이 교착 상태. 이것은 복수의 thread가, 상대의 락 해방을 서로 기다려 버리는 상황.

재사용성



재이용성이란, 클래스를 재이용할 수 있는 것. 멀티스레드 프로그래밍에서는, 스레드의 배타 제어의 구조나 방침을 잘 클래스 안에 숨기면, 재이용성이 높은 프로그램이 된다.

공연



퍼포먼스란, 처리를 고속·대량으로 실시할 수 있는 것. 처리량은 단위 시간당 처리 수입니다. 응답성은 요구를 내고 나서 반응이 돌아올 때까지의 시간. 응답성이 높은 것을 대기시간(latency)이 짧다고 할 수도 있다. 용량은 동시에 처리할 수 있는 수.

평가 기준 요약



안전성과 생존성을 지키는 것은 필수. 이를 충족시킨 후 어떻게 재사용성과 성능을 올리는가가 중요하다.

Java 스레드 우선 순위



Java의 우선 순위는 실행 처리 시스템을 식별하지 않으면 유용하지 않습니다.


  • 모든 Java의 실행 처리 시스템에 공통적으로 규정되어 있는 것은 거의 없다.
  • 그 때문에 실행 처리계(JVM의 구현, 버젼, OS)를 특정하지 않는 한 우선도는 도움이 되지 않는다.
  • 어떤 실행 처리 시스템에서는, 높은 우선도를 가지는 thread가 낮은 우선도를 가지는 thread보다 긴 CPU 시간을 할당할지도 모르고, 보다 높은 우선도를 가지는 thread가 모든 CPU 시간을 사용할지도 모른다 .
  • 스레드 스케줄링 알고리즘도 지정되지 않았습니다.

  • 우선 순위를 나타내는 클래스 필드


  • Thread.MIN_PRIORITY
  • Thread.NORM_PRIORITY
  • Thread.MAX_PRIORITY

  • 우선 순위를 설정 / 취득하는 메소드



    Thread 클래스의 인스턴스 메소드
    setPriority로 우선순위 설정
    getPriority로 우선순위 얻기

    관련
    「Java 언어로 배우는 디자인 패턴 (멀티 스레드 편)」정리 (그 1)

    좋은 웹페이지 즐겨찾기