2017-02-14 13 views

답변

1

List2에는 목록의 일부 구현이 할당되어 있습니다. 정확한 경우 그것은 SynchronizedRandomAccessList 객체 또는 SynchronizedList 객체이지만 ArrayList 객체는 아닙니다.

public static <T> List<T> synchronizedList(List<T> list) { 
     return (list instanceof RandomAccess ? 
       new SynchronizedRandomAccessList<>(list) : 
       new SynchronizedList<>(list)); 
} 

정적 방법 synchronizedList()이 경우에 단지 도우미 :

Here

는 소스 코드입니다. java (원시 값이 아닌)의 객체는 메모리 위치에 대한 참조를 전달하는 작업을합니다. 따라서 synchronizedList()new SynchronizedList() 객체에 대한 메모리 참조를 반환하고 이것을 호출하여 해당 메모리 위치를 list2 객체에 할당합니다.

1

항상 개체 인스턴스화가 필요합니다. 자바에는 두 개의 메모리 영역이 있습니다 : 스레드 스택과 힙.

  • 프리미티브 부울 바이트 짧고, 숯, INT 긴 부동 등 (오브젝트없는 즉 변수) 는 더블 스레드 스택으로 만든
  • 개체 저장된다 new 키워드가 할당됩니다 귀하의 경우에 힙

방법 Collections.synchronizedList에서 인스턴스화 List 객체가 힙이 목록에 대한 참조에 할당됩니다에 할당 지역 변수 list2

관련 문제