Netty 内蒂';s`sync`vs`syncunterrupty`

Netty 内蒂';s`sync`vs`syncunterrupty`,netty,channel,Netty,Channel,我试图从Netty的文档中找出答案,也在谷歌上搜索了一下,但我找不到关于通道未来的sync()和syncunterruptibly()方法之间的区别(除了sync显式抛出InterruptedException和syncunterrupty不抛出这一明显事实之外)。有人能解释一下这个问题吗 我想说,不间断地使用syncunterrupty更“令人愉快”(至少对我而言),因为它不会声明任何已检查的异常。如果这是唯一的区别,那么为什么这两种方法都存在呢?您可以查看一下,看看其中的区别 在第一种情况下

我试图从Netty的文档中找出答案,也在谷歌上搜索了一下,但我找不到关于
通道未来
sync()
syncunterruptibly()方法之间的区别(除了
sync
显式抛出
InterruptedException
syncunterrupty
不抛出
这一明显事实之外)。有人能解释一下这个问题吗

我想说,不间断地使用
syncunterrupty
更“令人愉快”(至少对我而言),因为它不会声明任何已检查的异常。如果这是唯一的区别,那么为什么这两种方法都存在呢?

您可以查看一下,看看其中的区别

  • 在第一种情况下,如果在执行未来相关操作的线程中引发了中断,因为执行
    sync
    (或
    wait
    )的当前线程不同,它将在调用方中引发异常,这样您就知道了

    if (Thread.interrupted()) {
        throw new InterruptedException(toString());
    }
    
  • 在第二种情况下,如果在执行未来相关操作的线程中抛出了一个中断,它只会在调用线程上重做一个中断,这意味着您需要以不同的方式管理该中断

    if (interrupted) {
        Thread.currentThread().interrupt();
    }
    
  • <>你可以考虑第一个作为加速器,以确保你测试中断。但是,有时你可能喜欢推迟这个中断处理到另一个调用方,你可能更喜欢第二个。 因此,用法与您希望如何处理线程中断有关