자바 다 중 스 레 드 노트
스 레 드 를 정의 하 는 두 가지 방법
1) Thread 클래스 를 계승 하여 run () 방법 을 다시 씁 니 다.
2) Runnable 인터페이스 안의 추상 적 인 방법 run () 을 실현 한다.
public class XianCheng extends Thread {
@Override
public void run() {
System.out.println(" Thread , run ");
}
}
public class XianCheng2 implements Runnable {
public void run() {
System.out.println(" Runnable ");
}
}
public class XianChengTest {
public static void main(String[] args) {
System.out.println(" ");
// Thread
XianCheng xc = new XianCheng();
// Runnable
XianCheng2 xc2 = new XianCheng2();
Thread t = new Thread(xc2);
XianCheng2 xc3 = new XianCheng2();
Thread t2 = new Thread(xc3);
// : start() ; : run(), run(), 。
xc.start(); // 1, main()
t.start(); // 2, main()
t2.start(); // 3, main() , , 。
}
}
라인 의 생명주기
1) 새 상태: 하나의 스 레 드 대상 이 생 성 되면 스 레 드 는 새 상태 에 있 습 니 다.
2) 준비 상태: 스 레 드 대상 이 start () 로 호출 된 후 준비 상태 에 들 어 갑 니 다.여러 개의 스 레 드 가 준비 상태 에 있 고 어느 스 레 드 가 운행 상태 에 들 어 가 는 지 불확실 하 다.스 레 드 가 준비 상태 에 들 어간 후 새 상태 에 들 어 갈 수 없습니다.대기 / 차단 상태 에 있 는 스 레 드 가 대기 와 차단 이 해 제 된 후 실행 상태 가 아 닌 준비 상태 에 들 어 갑 니 다.시스템 에서 어떤 스 레 드 를 자동 으로 선택 하여 운행 상태 로 들 어 갑 니까?
3) 실행 상태: 준비 상태 에 있 는 스 레 드 가 시스템 에서 선택 되면 스 레 드 가 CPU 시간 을 얻 으 면 이 스 레 드 는 실행 상태 로 들 어 갑 니 다.실행 상태 에서 스 레 드 의 run () 방법 을 실행 합 니 다.운행 상태 에 들 어간 후의 라인 이 반드시 한꺼번에 실행 이 끝 난 것 은 아니다.언제든지 스케줄 러 에 의 해 준비 상태 로 돌아 가 거나 대기 / 차단 상태 로 들 어 갈 수 있 습 니 다.단일 핵 CPU, 같은 시간 에 하나의 스 레 드 만 실행 상태 입 니 다.다 중 핵 CPU 에서 같은 시간 에 여러 스 레 드 가 실 행 될 수 있 습 니 다.
4) 대기 / 차단 상태: 대기 / 차단 상태 에 있 는 스 레 드 가 해 제 된 후 준비 상태 에 들 어가 시스템 의 스케줄 을 기다 립 니 다.
5) 사망 상태: 스 레 드 의 run () 방법 이 실 행 된 후에 프로그램 이 이상 하 게 종료 되면 스 레 드 는 사망 상태 에 들 어 갑 니 다.사망 상태 에 있 는 스 레 드 는 start () 방법 으로 스 레 드 를 시작 할 수 없습니다.일반적인 클래스 로 사용 할 수 있 습 니 다.
스 레 드 스케줄 링
원인: 스 레 드 의 실행 은 시스템 을 통 해 자동 으로 배 치 됩 니 다. 스 레 드 의 실행 순 서 는 불확실 합 니 다.일부 스케줄 링 방법 제어 시스템 의 스케줄 링 을 정의 합 니 다.이런 방법 들 도 반드시 시스템 스케줄 을 완전히 제어 할 수 있 는 것 은 아니 며, 단지 시스템 스케줄 에 대한 안내 일 뿐이다.
스케줄 링 방법
1) 수면 방법: 스 레 드 가 실행 상태 에 있 을 때 sleep ('스 레 드 수면 의 밀리초 수') 수면 방법 을 사용 하면 스 레 드 가 대기 / 차단 상태 에 들 어가 프로그램 운행 을 중단 합 니 다.
//
public static void sleep(long millis) throws InterruptedException;
public static void sleep(long millis, int nanos) throws InterruptedException;
2) 우선 순위 설정: 대부분의 시스템 에서 스 레 드 에 대한 스케줄 링 은 우선 순위 방식 을 사용 합 니 다.우선 순 위 는 1 부터 10 까지 수치 가 클 수록 우선 순위 가 높 고 우선 순위 가 높 은 스 레 드 가 더 많은 CPU 자원 과 실행 효율 을 차지 한 다 는 것 을 나타 낸다.자바 에서 스 레 드 의 기본 우선 순 위 는 5 입 니 다.Thread 클래스 에서 우선 순위 의 상수 정의 하기;MAX_PRIORITY,MIN_PRIORITY, NORM_PRIORITY。
//
public final void setPriority(int i){}
3) 양보 방법: 두 가지 포함
첫 번 째: yield 양보 방법, 즉 현재 CPU 를 양보 하 는 것 입 니 다. 그러나 CPU 를 어느 스 레 드 에 양보 하 는 지 는 확실 하지 않 고 시스템 에서 자동 으로 배 치 됩 니 다.yield 양보 방법 을 사용 하면 스 레 드 를 실행 상태 에서 준비 상태 로 들 어 갑 니 다.양보 방법 은 반드시 성공 하 는 것 이 아니 라 준비 상태 에 들 어간 이 스 레 드 도 시스템 에 의 해 재 조정 될 수 있다.
문법: public static void yield () {};
두 번 째: join 양보 방법, 현재 스 레 드 의 CPU 를 지정 한 스 레 드 에 양보 합 니 다.
// join
public final void join() throws InterruptedException;
public final void join(long millis) throws InterruptedException;
public final void join(long millis, int nanos) throws InterruptedException;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 객체 작성 및 제거 방법정적 공장 방법 정적 공장 방법의 장점 를 반환할 수 있습니다. 정적 공장 방법의 단점 류 공유되거나 보호된 구조기를 포함하지 않으면 이불류화할 수 없음 여러 개의 구조기 파라미터를 만났을 때 구축기를 고려해야 한다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.