-2
나는 여러 스레드의 작은 프로그램을 작성하고 있으며 상호 배타를 적용하기 위해 세마포를 사용하고 있습니다. 그러나 문제는 내 머리를 촉발시킵니다.스레드가 획득하기 전에 호출하기
이 Semaphore.acquire
보다 먼저 호출되면 어떻게됩니까?
광산이 정상적으로 작동합니다. 그것을하는 것은 나쁜 연습 또는 OK입니까?
나는 여러 스레드의 작은 프로그램을 작성하고 있으며 상호 배타를 적용하기 위해 세마포를 사용하고 있습니다. 그러나 문제는 내 머리를 촉발시킵니다.스레드가 획득하기 전에 호출하기
이 Semaphore.acquire
보다 먼저 호출되면 어떻게됩니까?
광산이 정상적으로 작동합니다. 그것을하는 것은 나쁜 연습 또는 OK입니까?
나는 모니터 원리에 대해 이야기하고 있다고 생각합니다. 이것은 많은 스레드 또는 프로세스와 공유되는 메모리의 데이터에 액세스하는 동안 교착 상태를 피하는 데 사용됩니다.
이렇게하는 경우 Java의 동기화 된 블록에 대해 알려주십시오. 이렇게하면 다른 스레드가 자신의 메서드 본문에서 동기화 된 블록을 보유하고있는 스레드와 동시에이 객체에 액세스 할 수 없게됩니다. 다른 사용자가 동기화 된 블록에있는 동안이 데이터에 액세스하려는 경우 다른 사용자는 현재 작업자 스레드가 관련 개체/데이터에이 상태를 유지할 때까지 기다려야합니다.
"Lock"에 그런 메소드가 없기 때문에, 나는 당신이 완전히 다른 것, 예를 들어 "Semaphore"에 대해서 이야기하고 있다고 생각할 것입니다. 그리고 저는 여러분이이 질문을하는 경우 실제로 그것이 무엇인지 이해하지 못한다고 가정하고 있습니다. –
(자물쇠를 사용하고 javadocs를 읽으십시오). –