线程终止
不正确的线程终止-stop
stop:终止线程,并且清除监视器锁的信息,但是可能导致线程安全问题
destroy:jdk未实现该方法
stop无法响应中断,使用interrupt方法
错误代码示例:
正确的线程终止-interrupt
如果目标线程在调用Object class的wait()、wait(long)或wait(long,int)方法、join()方法、join(long,int)或sleep(long,int)方法时被阻塞,那么interrupt会生效,该线程的中断状态将被清楚,抛出interruptedException异常。
如果目标线程是被i/o或者NIO中的channel所阻塞,同样,i/o操作会被中断或者返回特殊异常值。达到终止线程的目的。
如果以上条件都不满足,则会设置此线程的中断状态。
代码示例:
正确的线程终止-标志位
代码逻辑中,添加一个判断标志位,用来控制线程的终止。
代码示例: