정의하는 멀티 스레드 및 높은 동시 기초 1

프로세스와 스레드

운영 체제 프로세스가 할당 될 수있는 최소 단위이다
스레드 스케줄링 할 수있는 운영 체제 최소 단위 (프로그램의 다른 실행 경로)되고

스레드를 시작하는 세 가지 방법

1.Thread 2.Runnable 3.Executors

잠 和 수율

다른 스레드가 계속 실행에 잠 잠 스레드는 CPU를 할 수 있습니다. 시간은 지정된 일어나하기
때문에 CPU가 준비 상태로, 수율 반환을 대기 큐에 현재 스레드 다시

和는 통보 기다립니다

동기화 실행에 대한 필요성 통보하고 잠금이 해제 될 때까지 기다린 잠금을 해제하지 않습니다

붙다

직렬 실행에 병렬로 수행 될

ThreadState 스레드 상태

그림 삽입 설명 여기

동기화

1, 오브젝트 잠금만을 위해 로크 다음 단계에 코드를 가져 오는
2 객체 헤더 (64)에 의해 핫스팟 개의 아웃 상태 (마크 워드) 로크 레코드.

 1.JVM早期,synchronize非常重量级,后来改进锁升级的概念。
 2.一个线程时,mark word仅记录了线程ID,并没有上锁(偏向锁)
 3.如果有线程征用,升级为自旋锁(处于用户态,执行时间较短,线程数比较少,使用自旋锁。执行时间较长,线程较多使用系统锁)
 4.如果在自旋10次后,仍未获得锁,升级为重量级锁,(OS)

도 3은 동기 (이) 동기화 방법에 해당
4 급 동기화 등가 정적 메소드 동기화.
재진입 잠금 5 : 호출 할 수있는 다른 방법을 동기화하기위한 동기화 방법에있어서, 스레드가 이미 오브젝트의 로크를 소유 응용 프로그램이 다시 우리는 여전히 객체의 잠금 얻을 때,
6, 예외가 데이터 불일치의 결과로, 프로그램에서 기본적으로 잠금이 혼란에 스레드를 대기로 이어지는, 해제 발생

게시 25 개 원래 기사 · 원의 칭찬 0 · 조회수 586

추천

출처blog.csdn.net/RaymondCoder/article/details/105060888