"예술 자바 병행 프로그래밍"연구 노트 (A)

그런 다음 시리즈는 주로 미래의 검토 시간을 용이하게하고 잊지 방지하기 위해, 책 노트 및 관련 지식을 읽기 "의 분야에서 자바 동시성 '에 관한 것입니다. 직접 주제에 아도 :

제 1 장 동시 프로그래밍 과제

 동시 프로그래밍의 목표는 프로그램 실행 속도가하는 것이 아니라 더 많은 스레드가 동시 실행을 극대화 할 수있는 프로그램을 만들 수 있습니다 시작하지 않는 것입니다. 하드웨어와 소프트웨어의 제약에 의해 제한 컨텍스트 전환 문제, 교착 상태, 및 자원 : 동시 프로그래밍과 같은 많은 도전을 직면하게 될 것이다.

1.1 문맥 전환

       컨텍스트 스위치가 다음 작업에 스위치 다시하기 위해 작업의 상태를 저장하기 전에, 당신은이 상태로로드 할 수 있습니다. 하나의 작업에서 컨텍스트 스위치를 다시로드의 과정을 저장하는 것입니다.

    하나는 특정 빨리 멀티 스레드?

            꼭 그렇지는 않습니다. 약간의 시간이 걸릴 것이다 오버 스위칭 스레드 문맥 생성하기 때문이다.

    2 방법 컨텍스트 스위칭을 줄이기

            방법 : 스레드와 코 루틴의 사용을 최소화 아니오 동시 프로그래밍 잠금, CAS 알고리즘.

1.2 교착 상태

 간단한 시나리오 봐 :

1 개  공용  클래스 DeadLockDemo {
 2  개인  정적 문자열 A = "A" ;
3  개인  정적 스트링 B = "B" ;
4  공공  정적  무효 메인 (문자열 []에 args) {
 5  새로운 DeadLockDemo () 교착 ().;
6  }
 7  개인  공극 교착 () {
 8 스레드 T1은 = 새로운 스레드 ( 신규 의 Runnable () {
 9  @Override
 10  publicvoid 실행 () {
 11  동기화 (A) {
 12  시도. {는 Thread.currentThread () 잠 (2000 );
13 } 캐치 (의 InterruptedException E) {
 14  e.printStackTrace ();
15  }
 16  동기화 (B) {
 17 에서 System.out.println ( "1" );
18  }
 19  }
 20  }
 21  });
22 스레드 T2는 = 새로운 스레드 ( 신규 의 Runnable () {
 23  @Override
 24  publicvoid 실행 () {
 25  동기화 (B) {
 26  동기화 (A) {
 27 에서 System.out.println ( "2");
28  }
 29  }
 30  }
 31  });
32  t1.start ();
33  t2.start ();
34  }
 35 }
코드보기

 이 코드는 교착, 스레드 T1과 서로 잠금을 해제하기를 기다리는 T2 스레드의 원인이됩니다.

    피하기 교착 상태에 일반적인 방법 :

        1) 고정을 방지하는 복수의 스레드를 획득하는 단계;

        2) 동시에, 잠금 여러 자원을 점유 각 잠금 장치가 하나 개의 자원을 소요 있는지 확인하실 스레드를 피하십시오;

        3) lock.tryLock (제한 시간을 이용하여) 대신에 내부 잠금을 사용하여 타임 로크를 사용하려고

        4) 데이터베이스 잠금, 잠금 및 잠금 해제가 데이터베이스 연결해야합니다 그렇지 않으면 상황의 잠금을 해제 할 수 없게됩니다하십시오.

1.3 리소스 제약 도전

        자원 제한 사항 : 동시 프로그래밍 동안, 프로그램 실행 속도는 컴퓨터 하드웨어 리소스 또는 소프트웨어 리소스에 의해 제한됩니다 말합니다.

  자원 제약의 문제를 해결 :

      1) 하드웨어 자원 제약 조건 프로그램의 병렬 실행의 클러스터 사용을 고려. 독립형 자원이 제한되어 있기 때문에, 다음 여러 컴퓨터에서 실행되는 프로그램을 보자;

      2) 소프트웨어 자원 제약의 경우, 자원 풀 자원 재사용을 사용하는 것이 좋습니다.

1.4 요약

  계약 JDK 및 동시 컨테이너의 더 많은 사용은 이러한 클래스가 완전히 테스트 및 최적화 통과하기 때문에, 동시성 문제를 해결하는 도구를 제공하는 위의 문제를 해결할 수 있습니다


추천

출처www.cnblogs.com/mYunYu/p/12421546.html