gpt4 book ai didi

java - 忽略从另一个线程抛出的 InterruptedException

转载 作者:行者123 更新时间:2023-11-30 02:43:18 24 4
gpt4 key购买 nike

我有课

class Foo {
static void bar() throws InterruptedException {
// do something
Thread.sleep(1000);
}

static void baz(int a, int b, int c) throws InterruptedException {
// do something
Thread.sleep(1000);
}
}

然后我只需在我的主目录中运行它

class Main { 
public static void main() {
new Thread(Foo::bar).start();
new Thread(() -> Foo.baz(1, 2, 3)).start();
new Thread(() -> Foo.baz(1, 2, 3)).start();
}
}

我不关心 InterruptedException 。我尝试编写一个 try-catch block ,但是显然,异常没有被捕获。 Java 也不允许我让 main() 抛出异常。

我怎样才能简单地忽略这个我根本不关心的异常?我不想在每个线程构造函数中编写一个 try-catch block 。

有时应该抛出异常,但在这种特定情况下我不关心它。

最佳答案

在此解决方案中,我定义了一个接口(interface) Interruptible ,以及方法 ignoreInterruption它转换 InterruptibleRunnable :

public class Foo {

public static void main(String... args) {
new Thread(ignoreInterruption(Foo::bar)).start();
new Thread(ignoreInterruption(() -> Foo.baz(1, 2, 3))).start();
}

static void bar() throws InterruptedException {
// do something
Thread.sleep(1000);
}

static void baz(int a, int b, int c) throws InterruptedException {
// do something
Thread.sleep(1000);
}

interface Interruptible {
public void run() throws InterruptedException;
}

static Runnable ignoreInterruption(Interruptible interruptible) {
return () -> {
try {
interruptible.run();
}
catch(InterruptedException ie) {
// ignored
}
};
}

}

关于java - 忽略从另一个线程抛出的 InterruptedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41004279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com