Java에서 대기 알림 메커니즘에 대해 매우 기본적인 질문이 있습니다. 우리는 이것을 사용하여 두 개의 서로 다른 스레드를 동기화 할 수 있다는 것을 알고 있지만,이 스레드는 동일한 프로세스에서 실행되어야합니까? 두 개의 서로 다른 프로세스에서 두 개의 스레드가 실행되는 경우 어떻게해야합니까? 대기 알림 방식이 여전히 작동합니까?Java 대기 알림 - 다른 프로세스 간 메커니즘
답변
JVM 프로세스를 시작하면 작성한 모든 스레드와 사용하는 메모리가 해당 JVM 인스턴스에 속하지만 그 외의 다른 스레드는 없습니다.
다른 JVM 인스턴스를 시작할 때이 두 인스턴스는 메모리 자원을 공유하지 않습니다. 따라서 wait/notify (또는 그와 관련된 다른 객체)는 JVM 인스턴스에 속한 스레드에서만 액세스 할 수 있으며 다른 프로세스에서는 액세스 할 수 없습니다.
다른 프로세스에서 실행되는 스레드에 대해서는 대기 알림이 작동하지 않습니다.
가정하자 프로세스 A는 0x1000
메모리 할당 - 0x2000
, 그리고 0x1200
프로세스 B는 0x3000
메모리 할당 로크에 동기된다 -를 0x4000
. 그것은 아마도
당신의 최선의 동기화는
- 이 프로세스가 로컬 TCP/IP 소켓을 통해 서로 대화가 될 것입니다 그 시점에서 접근 ... 그것을 할 수있는,
0x1200
에 대한 액세스를 얻을 수 - 프로세스를 읽으십시오 & 쓰기 잠금 파일
+1 참고 : 자바는 모든 객체가 재배치 될 수 있기 때문에 메모리 주소에 대한 유혹에 저항하는 것이 중요합니다. 메모리 대신 "참조"라는 단어를 사용해야합니다. – Gray
아니오, 다른 프로세스는 다른 JVM을 시작하므로 스레드가 거기에서 통신하지 않습니다. 메커니즘은 동일한 JVM에서 실행중인 스레드와 함께 작동합니다.
wait()
다른 스레드가 계속 실행되는 동안 개체 모니터를 해제하고 무한 절전 모드로 전환합니다. notify()
은 wait()
이라는 첫 번째 스레드를 동일한 객체 모니터에서 깨 웁니다.
- 1. 프로세스 간 잠금 메커니즘 (예 : flock)
- 2. Java 프로세스 간 통신
- 3. Java 프로세스 간 통신
- 4. 프로세스 간 통신
- 5. ASP 알림 메커니즘
- 6. 다른 컴퓨터의 프로세스 간 통신
- 7. Apache와 다른 프로세스 간 통신
- 8. Linux의 프로세스 스케줄링 메커니즘
- 9. 두 프로세스 간 프로세스 간 통신
- 10. 스트라이프 알림 메커니즘
- 11. 알림 메커니즘 작동 방법
- 12. Java 객체 동기화, 대기 및 알림
- 13. 대기 프로세스
- 14. Java 동기화 게임 : 동기화 && 대기 && 알림
- 15. 배리어와의 프로세스 간 동기화
- 16. 자바 프로세스 간 통신
- 17. Groovy/Java 프로세스 관리 인터셉트/수신 대기
- 18. java 런타임 프로세스 - 입력 대기 중인지 확인하십시오.
- 19. 빠른 스레드 간 통신 메커니즘
- 20. Java Threading 순환 알림() 및 대기()
- 21. 언어/운영 체제 간 프로세스 간 통신
- 22. 프로세스 간 테스트
- 23. 파일 기반 프로세스 통신을위한 Java 파일 잠금 메커니즘
- 24. 프로세스 간 통신 fork() - 타이밍 대기() 및/또는 sleep()
- 25. 낮은 대기 시간 프로토콜을 사용하는 푸시 메커니즘
- 26. 파일 간 프로세스 간 통신
- 27. Syn.js에서 이벤트 간 대기
- 28. Linux 프로세스 간 재진입 세마포어
- 29. Linux에서 빠른 사용자 공간 프로세스 간 알림 방법?
- 30. Java 객체의 잠금 메커니즘
아래의 모든 대답이 정확합니다. 나는 그저 하나를 받아 들여야 만했다. – pree