Java의 동시 프로그래밍에서 참조되는 모니터는 무엇입니까?
“모든 개체가 모니터와 연결되어 있음”을 읽으면 무슨 의미입니까?
특별한 물건입니까?
답변
모니터는 객체에 대한 동시 액세스를 제어하는 메커니즘입니다.
이를 통해 다음을 수행 할 수 있습니다.
실 1 :
public void a()
{
synchronized(someObject) {
// do something (1)
}
}
실 2 :
public void b()
{
synchronized(someObject) {
// do something else (2)
}
}
스레드 1과 2가 동시에 모니터링 된 (동기화 된) 섹션에 액세스하는 것을 방지합니다. 하나는 시작되고 모니터는 다른 하나는 첫 번째 영역이 끝나기 전에 해당 영역에 액세스하지 못하게합니다.
특별한 물건이 아닙니다. 클래스 계층 구조 루트에 배치 된 동기화 메커니즘 java.lang.Object
입니다.
이 또한 wait
과 notify
도 다른 스레드간에 통신 객체의 모니터를 사용하는 방법.
답변
모니터는 잠금 및 대기 세트를 모두 갖는 엔티티입니다 . Java에서는 모든 Object
것이 모니터 역할을 할 수 있습니다.
Java에서 모니터가 작동하는 방법에 대한 자세한 설명은 Java 동시 프로그래밍 의 모니터 역학 섹션을 읽는 것이 좋습니다 (앞의 링크는 Google 도서에 미리보기를 표시하고 해당 섹션을 읽을 수 있음).
답변
- 모니터는 Java 언어에만 국한되지 않는 개념 / 메커니즘입니다.
- “동시 프로그래밍에서 모니터는 둘 이상의 스레드가 안전하게 사용하도록 설계된 객체 또는 모듈입니다”;
- 모든 독자가 알고 있듯이 Java의 모든 객체는 java.lang.Object의 하위 클래스입니다. 자바 사람들은 자바 프로그래머가 모든 객체를 모니터로 사용할 수있는 기능과 특징을 갖도록 java.lang.Object를 만들었습니다. 예를 들어, 모든 오브젝트에는 대기 큐, 재입국 큐 및 대기 및 통지 메소드가 있으며이를 모니터로 만듭니다.
- 모니터에 대한 정보는 여기를 참조하십시오 .
답변
Java 언어 및 런타임 시스템은 모니터 사용을 통한 스레드 동기화를 지원합니다.
모니터는 특정 데이터 항목 (조건 변수)과 연관되며 해당 데이터에 대한 잠금 기능을합니다. 스레드가 일부 데이터 항목에 대한 모니터를 보유하면 다른 스레드가 잠기 며 데이터를 검사하거나 수정할 수 없습니다.
답변
http://java.sun.com/docs/books/jvms/second_edition/html/Concepts.doc.html#33308
ㅏ 번에 하나씩 개체에 대한 액세스를 제어 메커니즘
답변
모니터는 스레드가 상호 배제와 특정 조건이 충족 될 때까지 대기 (차단) 할 수있는 동기화 구성입니다.
모니터에는 다른 스레드의 상태가 충족되었음을 알리는 메커니즘도 있습니다. 잠금 및 대기 세트를 모두 보유하는 엔티티입니다. Java에서 모든 Object는 모니터 역할을 할 수 있습니다.
JVM (Java Virtual Machine)에서 모든 오브젝트 및 클래스는 논리적으로 모니터와 연관됩니다. 모니터의 상호 배제 기능을 구현하기 위해 잠금 (뮤텍스라고도 함)이 각 오브젝트 및 클래스와 연관됩니다. 이것을 운영 체제 용어로 세마포라고하며 뮤텍스는 이진 세마포입니다.
답변
http://journals.ecs.soton.ac.uk/java/tutorial/java/threads/monitors.html
모니터는 오브젝트 또는 데이터 멤버와 연관되며, 이는 데이터 멤버 또는 오브젝트가 입력 될 때 획득되며 동기화 블록 (임계 섹션)이고 종료시 해제됩니다.
