Java 멀티스레드 기본 편 2 ------- 일반적인 방법
이 문서에는
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는 필요하지 않습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.