자바 일 보기 클래스(53)의 IO 패키지 의 SerialCallbackContext 클래스
이 종 류 는 가방 과 계승 류 를 도입 하지 않 습 니 다.
이 클래스 의 헤더 설명 은 다음 과 같 습 니 다.
/**
* Context during upcalls from object stream to class-defined
* readObject/writeObject methods.
* Holds object currently being deserialized and descriptor for current class.
*
* This context keeps track of the thread it was constructed on, and allows
* only a single call of defaultReadObject, readFields, defaultWriteObject
* or writeFields which must be invoked on the same thread before the class's
* readObject/writeObject method has returned.
* If not set to the current thread, the getObj method throws NotActiveException.
*/
대 의 는 다음 과 같다.
대상 흐름 에서 클래스 컨 텍스트 정의 readObject 와 writeObject 방법 으로 이 종 류 를 호출 합 니 다.
현재 역 직렬 화 된 클래스 와 이 클래스 의 설명 자 를 저장 합 니 다.
이 컨 텍스트 는 구 축 된 스 레 드 를 추적 하고 defaultReadObject,readFields,default Write Object 또는 writeFields 만 호출 할 수 있 습 니 다.클래스 전에 같은 스 레 드 에서 호출 해 야 합 니 다. readObject/writeObject 방법 이 되 돌 아 왔 습 니 다.
현재 스 레 드 를 설정 하지 않 으 면 getOj 방법 은 NotActiveException 을 던 집 니 다.
이 클래스 는 다음 과 같은 구성원 변 수 를 포함 합 니 다.
동작 하 는 Object:
private final Object obj;
내 포 된 대상 흐름:
private final ObjectStreamClass desc;
현재 작업 스 레 드
private Thread thread;
이 종 류 는 다음 과 같은 구성원 방법 을 포함 하고 있 습 니 다.
구조 함수
public SerialCallbackContext(Object obj, ObjectStreamClass desc) {
this.obj = obj;
this.desc = desc;
this.thread = Thread.currentThread();
}
현재 작업 대상 가 져 오기
public Object getObj() throws NotActiveException {
checkAndSetUsed();
return obj;
}
현재 대상 스 트림 설명자 가 져 오기
public ObjectStreamClass getDesc() {
return desc;
}
현재 작업 스 레 드 가용성 검사
public void check() throws NotActiveException {
if (thread != null && thread != Thread.currentThread()) {//
throw new NotActiveException(
"expected thread: " + thread + ", but got: " + Thread.currentThread());
}
}
현재 스 레 드 가 현재 작업 스 레 드 인지 확인 합 니 다.만약 비어 있 으 면 이상 을 던 집 니 다.
private void checkAndSetUsed() throws NotActiveException {
if (thread != Thread.currentThread()) {
throw new NotActiveException(
"not in readObject invocation or fields already read");
}
thread = null;
}
현재 작업 스 레 드 를 비 웁 니 다.
public void setUsed() {
thread = null;
}
이 종 류 는 주로 직렬 화 작업 시 대상,대상 류 에 대한 기록 에 사 용 됩 니 다.우 리 는 이 종 류 를 호출 할 수 없습니다.보면 됩 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.