Tag: interrupted exception

如果线程已被中断,Thread.sleep会抛出吗?

给定一个在没有被阻塞的情况下被中断的线程(即没有抛出InterruptedException),该线程在以后尝试睡眠时是否会抛出InterruptedException? 文档没有明确说明: InterruptedException – 如果有任何线程中断了当前线程。 抛出此exception时,将清除当前线程的中断状态。

具有Lambda表达式的线程

我在第42和43行有一个错误: Thread t1=new Thread(()->prod.test()); , Thread t2=new Thread(()->cons.test()); 未处理的exception类型InterruptedException 。 如果我尝试quickfix它将创建带有捕获exception的try catch,它将具有相同的错误并将尝试以相同的方式修复它继续用try catch包围它。 import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; interface Predicate { public void test() throws InterruptedException; } class MyClass { int num = 0; Lock lock = new ReentrantLock(); public void produce() throws InterruptedException { lock.lock(); for (int i = 0; i < 1000; i++) { […]

一旦我的线程中断,我怎么能中断RestTemplate调用?

我需要创建一个库,在其中我将具有同步和异步function。 executeSynchronous() – 等到我有结果,返回结果。 executeAsynchronous() – 立即返回一个Future,如果需要,可以在其他事情完成后处理。 我的图书馆的核心逻辑 客户将使用我们的库,他们将通过传递DataKey构建器对象来调用它。 然后,我们将使用该DataKey对象构造一个URL,并通过执行它来对该URL进行HTTP客户端调用,然后在我们将响应作为JSON字符串返回之后,我们将通过创建将该JSON字符串发送回我们的客户DataResponse对象。 有些客户会调用executeSynchronous() ,有些可能会调用executeAsynchronous() ,这就是为什么我需要在我的库中单独提供两个方法。 接口: public interface Client { // for synchronous public DataResponse executeSynchronous(DataKey key); // for asynchronous public Future executeAsynchronous(DataKey key); } 然后我有我的DataClient实现上面的Client接口: public class DataClient implements Client { private RestTemplate restTemplate = new RestTemplate(); private ExecutorService executor = Executors.newFixedThreadPool(10); // for synchronous call […]