단일 스레드 응용 프로그램이 주어졌으며 다중 스레드되도록했습니다. 사용되는 많은 싱글 톤 인스턴스가 있습니다.@prototype 범위가 멀티 스레딩에서 어떻게 도움이되는지
싱글 톤 인스턴스가 여러 스레드간에 공유되면 해당 인스턴스의 모든 변수가 여러 스레드간에 공유된다는 것을 알고 있습니다.
예를 들어, 카운트 변수가 있으며, 이는 싱글 톤 인스턴스 변수입니다. 내 생각은 각 스레드가 '카운트'를 증가시켜야한다는 것입니다. 각 스레드는 한 번만 증가합니다. 따라서 카운터는 1이어야합니다. 공유 객체의이 변수를 증가 시키면 모든 스레드가 해당 값을 가져옵니다. 따라서 두 번째 스레드가 수행 할 때 값은 1이 아닌 2가됩니다. 증가하는 n 번째 스레드의 경우 값은 1이 아닌 n이됩니다.
Inorder이 문제를 방지하기 위해 프로토 타입 해당 클래스의 범위. 이제 각 스레드에 대해 새 개체를 가져오고 카운터는 각 스레드마다 1을 유지합니다.
이것은 프로토 타입 범위를 사용하는 방법입니다. 이 말이 맞는가요? 나는 카운터에 대한 예제를 주었다. 공유 인스턴스에는 여러 유형의 변수가 많이있다. 제 프로토 타입을 사용하는 것이 타당합니까?
이것은 '카운터'라는 단일 변수에 관한 것이 아니라 많은 변수가 있습니다. – hars
변수가 다른 스레드에서 공유 할 필요가없는 경우 로컬 변수 (메소드 내에 수명주기가 포함 된 변수)가 될 수 있습니다. –
@hars이 질문에 대한 답변을 수락하면 동료 SO 사용자에게 도움이됩니다 –