(1) 동시 프로그래밍 자바 병행 프로그래밍 예술 도전

왜 동시 프로그래밍

동시 프로그램이 빠르게 실행 프로그램을 만들 수 있도록 설계되었습니다. 동시 발생 프로그래밍 문제, 컨텍스트 전환 문제, 교착 상태, 하드웨어 및 소프트웨어의 제약에 의해 제한하는 리소스를 해제합니다.

문맥 전환

또한 작업 시간 슬라이스 현재 태스크의 실행 시간 분할을 수행하기 위해 CPU 사이클에서 다음 작업 할당 알고리즘으로 전환한다. 전환 작업에 스위치 뒷면에 다음 상태로 상태의 작업에 유지되기 전에 그러나, 당신은이 작업을로드 할 수 있습니다. 그래서 작업은 다시로드하는 과정에서 컨텍스트 스위치를 저장하는 것입니다.

컨텍스트 스위칭을 줄이는 방법

잠금 경쟁 멀티 스레딩, 콘텍스트 스위치, 데이터의 다중 스레드 처리를 유발할 수 있고, 방법의 일부는 해시 알고리즘 모듈 세그먼트 다른 스레드에 따른 ID 데이터와 같은 잠금 장치의 사용을 피하기 위해 사용될 수있다 : 동시 프로그래밍 잠금없이 (1) 다른 세그먼트에서 데이터를 처리하는 단계를 포함한다.
(2) 알고리즘 CAS : 데이터를 업데이트하기 위해 원자 CAS 알고리즘을 사용하여 Java 패키지는 잠금이 필요하지 않습니다.
최소 스레드 (3) : 피하기는 작은 작업으로 원치 않는 스레드를 생성하지만, 핸들에 스레드를 많이 만들고,이 대기 상태에있는 많은 수의 스레드의 원인이됩니다
(4) 코 루틴은 : 단일 스레드 다중 작업 스케줄링에서 단일 스레드에서 여러 작업을 전환 유지한다.

교착 상태

스레드 T1과 T2 스레드 u는 서비스를 계속 제공 할 수 없으며, 결국 어떤 스레드 문제가 덤프 스레드를 볼 수 있기 때문에 서로가 일부 기능이 교착되면 사업이 인식되고, 사용할 수없는 원인이 잠금을 해제하기 위해 기다리고.

교착 상태를 피할 수있는 몇 가지 일반적인 방법

(1) 잠금 방지하는 복수의 스레드를 획득
스레드가 동시에 고정 자원을 점유하는 복수의 피 (2)를, 각각의 자물쇠는 자원되도록 시도 만 차지한다
(시간 제한) (3), 시도의 타이밍을 사용 lock.tryLock를 사용 대신 내부 잠금기구의 사용
데이터베이스 잠금을 해제하지 나타날 것이다 데이터베이스에 연결해야 그렇지 상황 (4)를 잠금 및 잠금 해제

게시 24 개 원래 기사 · 원 찬양 1 · 조회수 550

추천

출처blog.csdn.net/qq_45366515/article/details/105092436