Java 在多线程程序(如producer/consumer)中,什么';吞咽的目的是什么
有些代码只是简单地调用Java 在多线程程序(如producer/consumer)中,什么';吞咽的目的是什么,java,Java,有些代码只是简单地调用 catch(InterruptedException ex){},为什么?用于可能发生异常但对异常的响应与try块的正常继续相同的情况。一个常见的例子是调用sleep()。(然而,这通常是一个不好的例子,因为中断通常表示应该放弃操作。)用于可能发生异常但对异常的响应与try块的正常继续相同的情况。一个常见的例子是调用sleep()。(然而,这通常是一个不好的例子,因为被中断通常意味着一个操作应该被放弃。)这通常是一个信号,表明开发人员不知道如何处理异常,因此忽略了它 这是
catch(InterruptedException ex){},为什么?用于可能发生异常但对异常的响应与try块的正常继续相同的情况。一个常见的例子是调用sleep()。(然而,这通常是一个不好的例子,因为中断通常表示应该放弃操作。)用于可能发生异常但对异常的响应与try块的正常继续相同的情况。一个常见的例子是调用sleep()。(然而,这通常是一个不好的例子,因为被中断通常意味着一个操作应该被放弃。)这通常是一个信号,表明开发人员不知道如何处理异常,因此忽略了它 这是一种不良行为,导致一些人说检查异常是失败的实验。IMHO开发人员应该学会处理异常 处理此异常的更好方法是
- 把它传给打电话的人。i、 不要抓住它
- 调用Thread.currentThread().interrupt(),这样中断就不会丢失
- 如果不可能出现这样的异常,请将其包装在一个
抛出新断言错误(ex)
- 把它传给打电话的人。i、 不要抓住它
- 调用Thread.currentThread().interrupt(),这样中断就不会丢失
- 如果不可能出现这样的异常,请将其包装在一个
抛出新断言错误(ex)
- 中断异常是所谓的检查异常。当添加到要调用的方法时,这是一种表示必须考虑这种情况的方式,即处理调用结果所需的时间可能会被系统中的另一个线程抢占
假设在一个try块中有6-7条语句,并且假设它们将以或多或少的原子方式运行。在这些语句中,有一个依赖于线程感知行为。如果该调用被抢占,您随后的语句将无法运行,您将不得不处理后果
人们有各种各样的理由抓住这个例外,但却没有采取任何行动。我想不出有多少好的理由来这样做,除非我能清楚地表明被打断不会在我的代码中产生不良的副作用。给出任何显示这种行为的代码示例,我猜没有包含捕获逻辑,因为a)程序员没有处理它的计划;b) 程序员只想通过检查,这样代码就可以编译了 InterruptedException是所谓的检查异常。当添加到要调用的方法时,这是一种表示必须考虑这种情况的方式,即处理调用结果所需的时间可能会被系统中的另一个线程抢占 假设在一个try块中有6-7条语句,并且假设它们将以或多或少的原子方式运行。在这些语句中,有一个依赖于线程感知行为。如果该调用被抢占,您随后的语句将无法运行,您将不得不处理后果
人们有各种各样的理由抓住这个例外,但却没有采取任何行动。我想不出有多少好的理由来这样做,除非我能清楚地表明被打断不会在我的代码中产生不良的副作用。给出任何显示这种行为的代码示例,我猜没有包含捕获逻辑,因为a)程序员没有处理它的计划;b) 程序员只想通过检查,这样代码就可以编译了 捕捉、忽略异常并假装它们从未发生是一种常见的不良行为捕捉、忽略异常并假装它们从未发生是一种常见的不良行为