excel每次计算线程怎么关闭,excel一直提示正在计算12个线程

首页 > 实用技巧 > 作者:YD1662023-04-30 13:19:22

在面试过程中,有时面试官会问,“如何正确停止一个线程”。这个问题的言外之意是,如果你以不正确的方式停止一个线程,可能会导致各种异常问题,比如数据不一致,比如消息丢失等。

如果你经常阅读开源软件的源码,就发现,源码中经常会出现close这个变量,比如在Kafka的源码RecordAccumulator类中是这样子的:

private volatile boolean closed;

当主动关闭这个类的时候,我们会看到它会把这个变量设置成true,比如这样子

public void close() { this.closed = true; this.free.close(); }

在其他地方,则根据close判断是否要继续,比如这样子

synchronized(dq){ if(closed) thrownewKafkaException("Producerclosedwhilesendinprogress"); RecordAppendResultappendResult=tryAppend(timestamp,key,value,headers,callback,dq,nowMs); if(appendResult!=null) returnappendResult; }

一旦close等于true,所有的方法能很快结束,最终该线程也能很快结束并被关闭。

所以正确关闭线程的方式是使用退出标志,使线程正常退出,当然一般情况,你需要等待一会,线程才会关闭,毕竟它还是需要完成那最后的工作的,比如他需要等运行到判定close状态那条语句才行。

另外,如果你不使用close,使用中断标志也是可以达到相同目的的。

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.