Thread如何中止操作执行退出

方式一:通过布尔变量,侵入业务逻辑,实现是声明quit方法,修改boolean值,在业务逻辑过程中,判断booean值,决定是否退出操作,释放资源,退出线程。

方式二:通过interrupt中断操作来执行。线程对象里会维护一个interrupt值,标记是否中断状态为真。在sleep,wait,join等阻塞业务时,轮循判断interrupt值,为真时,则抛出InterruptedException,并reset interrupt值为false;若interrupt值为false,则继续阻塞。

private volatile Interruptible blocker;
public void interrupt() {
        if (this != Thread.currentThread())
            checkAccess();

        synchronized (blockerLock) {
            Interruptible b = blocker;
            if (b != null) {
                interrupt0();           // Just to set the interrupt flag
                b.interrupt(this);
                return;
            }
        }
        interrupt0();
    }

也可通过实现Interruptible接口的interrupt(Thread t)方法,操作t线程退出相关操作

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容