Thread.stop 동기화 이상 문제를 일으키는 코드 샘플
그 자체가 안전하지 않기 때문이다.한 라인을 멈추면 모든 자물쇠의 감시를 방출하게 된다.(사망 라인의 잠긴 감시상의 이상이 창고에서 전파된다).이전에 잠겨 있던 대상이 일치하지 않으면 다른 라인에서 일치하지 않는 상태를 볼 수 있습니다.이런 대상은 파괴된 것으로 인정할 수 있다.스레드가 파괴된 대상을 조작할 때 어떤 결과를 초래할 수 있습니다.이 현상은 미묘하고 눈치채기 어려울 수도 있고 드러날 수도 있다.다른 검사의 예외와 달리 Thread Death는 조용히 라인을 죽였기 때문에 사용자는 경고를 받지 못했습니다. 프로그램이 손상될 수 있습니다.문제는 언제든지 실제 손해가 발생할 수 있으며, 심지어는 몇 시간 또는 며칠 뒤에도 발생할 수 있다.
/**
* Thread.stop 。<br>
* 。 , 。
*
* @author JAVA (java2000.net)
*
*/
public class ThreadStopTest {
private static Object lock = new Object();
private static int number = 0;
private static String name = "Name0";
public static void main(String[] args) {
ThreadStop t = new ThreadStop();
t.start();
ThreadRun t2 = new ThreadRun();
t2.start();
//
// number=1
// name=Name0,
// stop,
// nunber=1
// name=Name11
t.stop();
}
static class ThreadRun extends Thread {
public void run() {
synchronized (lock) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("number=" + number);
System.out.println("name=" + name);
}
}
}
static class ThreadStop extends Thread {
public void run() {
synchronized (lock) {
number++;
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
name = "Name" + number;
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Exception in thread main java.lang. NoClassDefFoundError 오류 해결 방법즉,/home/hadoop/jarfile) 시스템은 Hello World 패키지 아래의class라는 클래스 파일을 실행하고 있다고 오인하여 시스템의 CLASSPATH 아래 (일반적으로 현재 디렉터리를 포함) Hell...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.