CancelablePrintJob
CancelablePrintJob (취소 가능 인쇄 작업)
CancelablePrintJob은 인쇄 애플리케이션이 인쇄 작업을 취소하기 위해 사용하는 인터페이스예요. 이 인터페이스는 DocPrintJob을 확장해요. 인쇄 서비스에서 반환된 DocPrintJob 구현은 인쇄 작업을 취소할 수 있으면 이 인터페이스를 구현해요.
본문
작업 취소를 시도하기 전에 클라이언트는 인쇄 서비스에서 반환된 DocPrintJob 객체가 실제로 이 인터페이스를 구현하는지 테스트해야 해요. 클라이언트는 DocPrintJob이 이 인터페이스를 구현한다고 가정해서는 안 돼요. 인쇄 서비스는 특정 유형의 인쇄 데이터와 표현 클래스 이름에 대해서만 취소를 지원할 수 있어요. 즉, 서비스에서 반환된 DocPrintJob 객체 중 일부만 이 인터페이스를 구현해요.
서비스 구현자는 이 선택적 인터페이스를 구현하고, 작업이 이 인터페이스 구현으로 성공적으로 취소되면 어떤 리스너에게든 PrintJobEvent.JOB_CANCELED 이벤트를 전달하도록 권장돼요. 서비스는 또한 이 메서드의 구현이 인쇄 요청을 만든 스레드와 다른 별도 클라이언트 스레드에서 이뤄질 수 있음을 알아야 해요. 따라서 이 인터페이스의 구현은 스레드 안전하게 만들어야 해요.
cancel
void cancel() throws PrintException
인쇄 작업의 추가 처리를 중지해요.
서비스가 이 메서드를 지원한다고 해서 작업 취소가 항상 성공한다고 결론내릴 수는 없어요. 작업이 처리의 어떤 지점에 도달하고 지나가면 더 이상 취소할 수 없을 수 있어요. 성공적인 취소는 단지 전체 작업이 인쇄되지 않았음을 의미하며, cancel이 반환될 때 일부 부분이 이미 인쇄됐을 수 있어요.
취소가 성공하지 못하면 서비스는 PrintException을 던져요. 아직 인쇄를 위해 제출되지 않은 작업은 이 예외를 던져야 해요. 이미 성공적으로 취소된 인쇄 작업을 다시 취소하는 것은 오류로 간주되지 않으며 항상 성공해요.
일부 서비스에서 취소는 서버에 요청하고 인쇄 큐를 처리하는 등 오래 걸리는 프로세스일 수 있어요. 클라이언트는 애플리케이션 실행에 영향을 주지 않는 스레드에서 cancel을 실행할 수 있어요.