Netty 内蒂';s`sync`vs`syncunterrupty`
我试图从Netty的文档中找出答案,也在谷歌上搜索了一下,但我找不到关于Netty 内蒂';s`sync`vs`syncunterrupty`,netty,channel,Netty,Channel,我试图从Netty的文档中找出答案,也在谷歌上搜索了一下,但我找不到关于通道未来的sync()和syncunterruptibly()方法之间的区别(除了sync显式抛出InterruptedException和syncunterrupty不抛出这一明显事实之外)。有人能解释一下这个问题吗 我想说,不间断地使用syncunterrupty更“令人愉快”(至少对我而言),因为它不会声明任何已检查的异常。如果这是唯一的区别,那么为什么这两种方法都存在呢?您可以查看一下,看看其中的区别 在第一种情况下
通道未来
的sync()
和syncunterruptibly()方法之间的区别(除了sync
显式抛出InterruptedException
和syncunterrupty
不抛出这一明显事实之外)。有人能解释一下这个问题吗
我想说,不间断地使用syncunterrupty
更“令人愉快”(至少对我而言),因为它不会声明任何已检查的异常。如果这是唯一的区别,那么为什么这两种方法都存在呢?您可以查看一下,看看其中的区别
在第一种情况下,如果在执行未来相关操作的线程中引发了中断,因为执行sync
(或wait
)的当前线程不同,它将在调用方中引发异常,这样您就知道了
if (Thread.interrupted()) {
throw new InterruptedException(toString());
}
在第二种情况下,如果在执行未来相关操作的线程中抛出了一个中断,它只会在调用线程上重做一个中断,这意味着您需要以不同的方式管理该中断
if (interrupted) {
Thread.currentThread().interrupt();
}
<>你可以考虑第一个作为加速器,以确保你测试中断。但是,有时你可能喜欢推迟这个中断处理到另一个调用方,你可能更喜欢第二个。
因此,用法与您希望如何处理线程中断有关