let thread = Thread.init {
while (!Thread.current.isCancelled) {
print("loop")
Thread.sleep(forTimeInterval: 1)
}
}
thread.start()
DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
print("cancel Thread")
thread.cancel()
}
Thread.cancel()
을 선언해도 !Thread.current.isCancelled
를 While문의 Escape으로 작성해주지 않으면 Thread가 중지되지 않는다. 그 이유는 Thread.cancel() 함수는 해당 Thread의 state(flag)를 cancel state로 Set만 하기 때문이다.