지연초기화란 무엇인가요?
모범 사례 및 예시
예:
private final FieldType field = computeFieldValue();
달리 요구되지 않는 한 대부분의 필드에 일반 초기화를 사용하세요.
예:
private FieldType field; synchronized FieldType getField() { if (field == null) { field = computeFieldValue(); } return field; }
3. 캐리어 클래스 실습(정적장용)
예:
private static class FieldHolder { static final FieldType field = computeFieldValue(); } static FieldType getField() { return FieldHolder.field; }
장점: 필드에 액세스할 때만 클래스를 초기화하며 초기화 후 비용은 최소화됩니다.
4. 이중 확인 연습(인스턴스 필드)
예:
private volatile FieldType field; FieldType getField() { FieldType result = field; if (result == null) { // Primeira verificação (sem bloqueio) synchronized (this) { result = field; if (result == null) { // Segunda verificação (com bloqueio) field = result = computeFieldValue(); } } } return result; }
5. Single Check 연습(반복초기화 허용)
예
private volatile FieldType field; FieldType getField() { if (field == null) { // Verificação única field = computeFieldValue(); } return field; }
6. 굵은 싱글 체크 연습
예:
private FieldType field; FieldType getField() { if (field == null) { // Sem volatile field = computeFieldValue(); } return field; }
일반 고려사항
장점:
멀티스레드 동기화:
선호되는 용도:
최종 요약
위 내용은 항목 지연 초기화를 아껴서 사용하세요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!