Java 다중 스레드 사용 요점 분석
sleep 방법과wait 방법의 공통점?
동일점:
라인을 동결 상태에 놓다.
차이점:
sleep는 시간을 지정해야 합니다.
wait는 시간을 지정할 수도 있고 시간을 지정하지 않을 수도 있습니다.
sleep 시간 도착, 라인이 임시 차단 상태나 운행 상태
wait 시간이 없으면 notify 또는 notify All을 통해 깨워야 합니다
sleep가 굳이 동기화에 정의해야 하는 것은 아니다
wait는 동기화에 정의되어야 합니다.
동기화에 정의된 경우
sleep 실행권, 자물쇠 안 넣기
wait 실행권 놓기, 자물쇠 넣기
syschronized(obj)
{
wait();// 0 1 2
code...
}
syschronized(obj)
{
notifyAll();// 3
code...
}
스레드가 어떻게 멈추는지stop 방법
stop 방법은 이미 유행이 지났습니다. 설명을 보면 다른 해결 방안이 있습니다.
스레드 종료: 스레드 작업 코드를 실행하고run 방법을 종료합니다.
run 방법은 어떻게 끝냅니까?
정의된 순환을 통해
주의: 만일 스레드가 임무 중 동결 상태에 있다면 그는 표기를 판단할 수 있습니까?
이른바 중단 상태는 정지선이 아니다.
interrupt 인터럽트 상태
만약 목표 라인이 오래 기다린다면,interrupt 방법을 사용하여 이 기다림을 중단해야 합니다
중단이란 라인을 멈추는 것이 아니다.
interrupt의 기능은 스레드의 동결 상태를 제거하고 스레드를 실행 상태로 복구하는 것입니다. (스레드가 cpu의 실행 자격을 다시 갖도록 합니다.)
강제적이기 때문에 이상이 발생합니다. Interrupted Exception에서catch에서 이상을 포착할 수 있습니다.
이상 처리에서 표시를 바꾸어 순환을 끝내고run 방법을 끝냅니다.
수호 스레드
수호 루트: 백그라운드 루트로도 이해할 수 있습니다. 이전에 만들어진 것은 모두 프론트 루트입니다.
스레드가 setDaemon(true)을 호출하면라인을 수호 라인으로 표시할 수 있습니다.
프론트 데스크톱 라인이 실행될 때 모두 똑같습니다. CPU의 실행권을 가져옵니다.
끝날 때만 좀 달라요.
프론트 데스크의 라인은run 방법을 통해 끝내야 하고, 라인은 끝내야 한다.
백그라운드 라인도run방법을 통해 끝날 수 있고, 라인이 끝날 수도 있고, 또 다른 상황이 있다.
프로세스의 모든 프론트 라인이 끝났을 때 백엔드 라인이 어떤 상태에 있든지 간에 프로세스가 끝날 것입니다.
프로세스가 끝나면 의존하는 것은 모두 프론트 라인이다.
스레드 우선 순위
스레드의 우선 순위: 숫자로 표시된, 1-10
여기서 기본 초기 우선 순위 5 가장 뚜렷한 세 가지 우선 순위 1, 5, 10.
setPriority(Thread.MAX_PRIORITY);
스레드 그룹
스레드 그룹:ThreadGroup:Thread의 구조 함수를 통해 새 스레드 대상이 속한 스레드 그룹을 명확하게 할 수 있습니다.
스레드 그룹의 장점은 여러 개의 같은 그룹의 스레드에 대해 통일된 조작을 할 수 있다.
기본값은main 루틴 그룹에 속합니다.
익명 내부 클래스
Runnable rn = new Runnable() {
public void run() {
}
};
//
class Anomymous implements Runnable {
public void run() {
}
}
Runnable rn = new Anomymous();
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.