Java 다중 스레드 사용 요점 분석

2116 단어 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();

 
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기