내가 자바 응용 프로그램의 메모리 할당 및 멀티 스레딩에 관해서 몇 가지 디자인을 통해 생각하기 위해 노력하고있어이 내가 궁금하네요 무엇 :는 컬렉션 대 자바 배열을 반환
나는 동기화 된 컬렉션을 가진 클래스가 두 번째로 여러 번 업데이트되는 목록을 말하지만 클래스 내에서 모든 업데이트가 발생하고 다른 스레드에서 자체 스레드가 발생하지 않습니다. 그러나 getCollection() 메서드를 호출하고 foreach를 사용하여 내용을 읽기 전용으로 반복하는 다른 많은 스레드가 있습니다. 이것은 내가 모르는 것입니다 :
다른 스레드가 동기화 된 colletion을 반복하는 경우 업데이트를 수행하는 단일 스레드는 다른 스레드가 반복하지 않는 시점까지 기다려야합니까?
두 번째 질문은 .toArray를 사용하여 컬렉션 자체가 아니라 컬렉션의 배열 복사본을 반환하는 것이 합리적이라고 생각하지만 메모리 관점에서 생각하면 새로운 배열을 할당해야합니다. 그것은 매번 컬렉션 내용의 크기이고 수천 개의 객체가있는 콜렉션에서 두 번째로 수백 번 호출되는 경우에는 모르는 내용입니다.
또한 목록을 동기화하는 것보다 컬렉션 자체를 반환하지 않으면 더 이상 필요하지 않습니다.
모든 입력을 부탁드립니다. 감사! - 던컨
+1 : 나에게 너무 빠릅니다. ;) –