Java 멀티스레드 기본 편 2 ------- 일반적인 방법

2123 단어
위의 자바 다중 스레드 기초편은 자바 다중 스레드에서 가장 흔히 볼 수 있는run () start () sleep () 를 소개합니다.
이 문서에는
1, stop () 중단 스레드
거친 끝 라인은 런 () 방법의 코드체가 실행 중일 가능성이 높습니다.
package chc.runnable;

public class StopTest {
	public static void main(String[] args) {
		Thread7  t=new Thread7();
		t.start();
		try {
			Thread.sleep(10);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		t.stop();
	}
}
class Thread7 extends Thread{
    public void run() {
        for (int i = 0; i < 100*100; i++) {
            System.out.println("Thread-----:"+i);
        }
    }
}

2. wait notify () notify All () 이 세 가지 방법은 모두 Object 클래스에 속하는 방법이다
wait () 는 현재 스레드를 기다리게 합니다. 다른 스레드가 이 대상의 notify () 또는 notify All () 방법을 사용해서 이 스레드를 깨우는 것을 알 수 있습니다.
wait (long timeout) 는 이 대상의 notify () 방법이나 notify All () 방법을 호출할 때까지 현재 라인을 기다리거나 지정한 시간을 초과합니다. (파라미터는 밀리초)
wait(long timeout, int nanos)는 이전 방법과 유사하다. 그 중에서 timeout인지 밀리초 nanos인지 이것은 notify()나 notify All() 방법을 기다리거나 지정된 시간(지정된 시간=(timeout*10000000+nanos)을 초과하는 미세초)을 기다리는 것이다. 이를 통해 알 수 있듯이 이전보다 시간 제어가 세밀해졌기 때문에 자주 사용하지 않을 것이다. API에서만 보면 알 수 있다.
이 대상 모니터에서 기다리는 단일 라인을 깨웁니다. 대기 라인이 여러 개 있으면 그 중 한 라인을 깨워서 준비된 상태로 들어갑니다. 선택은 임의입니다.
notify All () 는 당연히 이 대상의 모든 대기 라인을 깨워서 그들이 준비된 상태로 들어갈 수 있도록 합니다.
3. wait()와sleep()의 차이
A. 첫 번째 가장 뚜렷한 차이점은wait는 Object류의 방법이고sleep()는 Thread류의 정적 방법이다. 누가 이 방법을 사용했는지 누가 휴면을 했는지, a라인에서 b라인의sleep방법을 사용했음에도 불구하고 실제로는 a라인이 휴면을 했다.
B. 비교적 중요한 점은sleep에서 자물쇠를 방출하지 않았고wait에서 자물쇠를 방출했기 때문에 다른 라인에서 동기화 블록 자원을 사용할 수 있다.
sleep는 시스템 자원을 양도하지 않습니다.wait는 스레드 대기 탱크에 들어가서 시스템 자원을 양도하고 다른 스레드는 CPU를 차지할 수 있습니다.일반적으로wait는 시간 제한을 가하지 않습니다. 만약wait 스레드의 운행 자원이 부족하면 다시 나와도 소용없기 때문에 다른 스레드가 notify/notifyAll을 호출하여 대기 탱크의 모든 스레드를 깨우기를 기다려야 준비된 대기열에 들어가 OS 분배 시스템 자원을 기다릴 수 있습니다.sleep (milliseconds) 는 시간 지정으로 자동으로 깨울 수 있습니다. 시간이 안 되면 인터럽트 () 를 사용해서 강제로 끊을 수 있습니다.
C. 사용 범위:
wait, notify, notify All은 동기화 제어 방법이나 동기화 제어 블록에서만 사용할 수 있으며,sleep는synchronized (x) {x.notify ()//또는wait ()}를 어디서든 사용할 수 있습니다.
D, sleep은 이상을 포착해야 하지만 wait는 필요하지 않습니다.

좋은 웹페이지 즐겨찾기