작업 중단
사용자가 취소하기를 요청한 경우
- 사용자가 화면상에서 ‘취소' 버튼을 클릭하거나, 인터페이스를 통해 작업을 취소한 경우
시간이 제한된 작업
- 일정 시간 이내에 답이 될만한 결과를 계쏙해서 찾고 있다가, 제한된 시간이 지나면 그 동안 찾았던 결과 가운데 가장 좋은 값을 사용하도록 프로그램을 작성한 경우
애플리케이션 이벤트
- 원하는 결과를 얻기 위해 다양한 조건을 지정해 여러 작업을 동시에 실행시키고, 특정 작업 결과 원하던 값을 얻었다면 나머지 실행중이던 작업 모두 취소
오류
- 특정 작업에서 오류가 발생한 경우 다른 작업도 모두 취소시켜야 함
종료
- 현재 처리하는 중이었던 작업에 대한 내용이건, 아니면 처리하기 위해 큐에서 대기하던 항목이건 간에 마무리하는 절차 필요
- 종료 절차가 안전하게 진행되려면 실행되고 있던 작업은 모두 종료될 때까지 기다려야 할 수 있음
- 급하게 종료해야 하는 경우라면 실행 중이던 작업을 모두 취소
자바 언어에서 특정 스레드를 명확하게 종료시킬 수 있는 방법은 없어, 특정 작업을 임의로 종료시킬 수 있는 방법이 없다
작업을 실행하는 스레드와 작업을 취소했으면 한다고 요청하는 스레드가 함께 작업을 멈추는 협력적인 방법을 사용해야 함
- 가장 기본적인 형태는 ‘취소 요청이 들어왔다’는 플래그를 설정하고 실행 중인 작업은 취소 요청 플래그를 주기적으로 확인
- 작업을 쉽게 취소시킬 수 있도록 만들려면 작업을 취소하려 할 때 ‘어떻게', ‘언제’, ‘어떤 일'을 해야 하는지, 이른바 취소 정책을 명확히 정의해야 함
> 외부에서 작업을 취소하려 할 때 어떤 방법으로 취소 요청을 보낼 수 있는지, 작업 내부에서 취소 요청이 들어 왔는지 언제 확인하는지, 취소 요청이 들어오면 실행 중이던 작업이 어떤 형태로 동작하는지 등에 대한 정보