자바 다 중 스 레 드 노트

3706 단어 JAVA자바
다 중 스 레 드: 프로그램 이 같은 시간 에 여러 작업 을 수행 합 니 다.모든 프로그램 에서 main 방법 은 하나의 스 레 드 로 주 스 레 드 라 고 합 니 다.메 인 라인 에서 여러 개의 키 라인 을 시작 할 수 있 습 니 다.
 
스 레 드 를 정의 하 는 두 가지 방법
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;

좋은 웹페이지 즐겨찾기