문제

또 다른 모호한 예에 대해 죄송합니다 ... 그러나 새 스레드 인스턴스를 시작하는 단일 클래스가 있습니다. 그러나 새 스레드 인스턴스를 추가하면 첫 번째 스레드 인스턴스가 중단됩니다 (파괴?).

그러나 각 인스턴스가 단일 스레드 만 열면 동시에 잘 실행됩니다.

오류가 내가 멀티 스레딩을 구현하는 방식이라고 확신합니다.

찾아야 할 것들에 대한 제안이 있습니까? 감사! 모호한 예에 대해 죄송합니다.

도움이 되었습니까?

해결책

임의의 클래스가 스레드 안전이라고 가정 할 수 없습니다.

수업의 저자 ~해야 한다 클래스의 스레드 안전성에 대해 명시 적이지만, 그렇지 않은 것은 매우 일반적입니다. 서블릿과 같은 환경이 본질적으로 mulit-streaded 일 수 있다는 점을 감안할 때 이것은 실제 문제가 될 수 있습니다.

수업을 공부하고 방법이 스레드 안전 한 경우를 발견해야합니다. classofclassIdontControl 클래스의 클래스는 멀티 스레드 액세스에 의해 혼란스러워지는 정적 변수를 가질 수 있습니다. 클래스를 통제 할뿐만 아니라 소스를 볼 수 없다면 소유자 지원이 필요합니다.

다른 팁

좋아, 여기 예입니다.

public class driver {

    public static void main(String args[])
    {
        Thread x;
        Thread y;

        x = new Thread(new pow());
        y = new Thread(new pow());

        x.start();
        y.start();  
    }
}

public class pow extends Thread {

    public void run() {
        InstanceOfClassIDontControl a = new InstanceOfClassIDontControl();
                a.doVariousProcesses();
    }
}

이 예에서, 나는 (분명히) 실에서 인스턴스가 생성되고 호출되는 클래스를 제어하지 않습니다. 각 스레드는 몇 분 동안 실행될 수 있습니다. 그러나 동시 스레드가 실행될 때마다 (이 경우 y.start ()와 함께) x.start ()의 run () 인스턴스에서 호출 된 객체의 동작을 파괴합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top