草庐IT

InterruptedException

全部标签

java - 是否可以中断 ExecutorService 的特定线程?

如果我有一个ExecutorService并向其提供Runnable任务,我可以选择一个并中断它吗?我知道我可以取消返回的Future(也提到了Here:how-to-interrupt-executors-thread),但是我怎样才能引发InterruptedException。Cancel似乎没有这样做(尽管它应该通过查看源代码来实现,也许OSX实现不同)。至少这个片段不会打印“它!”也许我误解了什么,不是自定义可运行程序导致异常?publicclassITTest{staticclassSth{publicvoiduseless()throwsInterruptedExcept

java - 为什么 InterruptedException 是检查异常?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。这是我们制作自己的线程时关于旧Java的问题。某些方法,例如Thread.sleep(100)会在被另一个线程中断时抛出InterruptedException。据我了解,中断意味着另一个线程在说:让我现在接管。发生这种情况时,为什么Java要我们处理InterruptedException?当线程相互中断时,程序员甚至不需要关心。他应该能够在线程之间分配

Java:当被另一个线程中断时,如何在线程上捕获 InterruptedException?

我正在开发一个多线程应用程序来连接到外部服务器-每个服务器都在单独的线程上-并且在有输入之前将被阻塞。其中每一个都扩展了Thread类。为了便于解释,我们称这些为“连接线程”。所有这些连接线程都存储在并发HashMap中。然后,我允许调用RESTfulWeb服务方法来取消任何线程。(我使用的是Grizzly/Jersey,所以每次调用都是一个单独的线程。)我检索特定的连接线程(从hashmap)并调用它的interrupt()方法。那么,问题来了,在连接线程中,我如何捕获InterruptedException?(当连接线程被外部RESTful命令停止时,我想做一些事情。)

java - 需要示例程序来抛出 InterruptedException

我正在阅读kathysierraSCJP1.5第9章(线程),其中提到:Noticethatthesleep()methodcanthrowacheckedInterruptedException(you'llusuallyknowifthatisapossibility,sinceanotherthreadhastoexplicitlydotheinterrupting),soyoumustacknowledgetheexceptionwithahandleordeclare我只需要一个示例程序来知道它何时发生(我可以在我的机器上运行)?我用谷歌搜索但找不到任何示例代码来测试此功能.

java - 为什么 Java Concurrency In Practice list 5.18 不能用锁自动完成?

在JavaConcurrencyinPractice的第106页上,它说“Memoizer3容易受到问题[两个线程看到null并开始昂贵的计算]因为复合操作(put-if-absent)在无法使用锁定使其成为原子的支持映射上执行。”我不明白为什么他们说不能使用锁定使其成为原子。原代码如下:packagenet.jcip.examples;importjava.util.*;importjava.util.concurrent.*;/***Memoizer3**MemoizingwrapperusingFutureTask**@authorBrianGoetzandTimPeierls*

java - 为什么 InterruptedException 是检查异常?

在Java中使用线程时,处理InterruptedException似乎是我的一个特别棘手的问题。我很欣赏它在我的线程终止时抛出的事实,从而为我提供了清理的机会。我觉得奇怪的是它不是未经检查的异常。这会产生以下问题:a)如果我想在线程应用程序中使用现有框架,我被迫将其转换为框架接口(interface)接受的异常。因此,框架通常会误解它,而不是按照它应该的方式清理或传播它。b)除非为堆栈中的每个调用严格声明InterruptedException(通常不是因为a)),否则很难干净地关闭。如果InterruptedException未被选中,它似乎更有可能被正确使用并导致线程和应用程序的

java - 如果它实际计算就不可能中断线程?

鉴于此代码...publicclassSimpleTest{@TestpublicvoidtestCompletableFuture()throwsException{Threadthread=newThread(SimpleTest::longOperation);thread.start();bearSleep(1);thread.interrupt();bearSleep(5);}publicstaticvoidlongOperation(){System.out.println("started");try{booleanb=true;while(true){b=!b;}}ca

java - 在 Callable 中处理 Thread.interrupted() 的正确方法?

在Callable中处理Thread.interrupted()的正确方法是什么?我猜可调用对象应该抛出一个InterruptedException;例如:publicclassMyCallableimplementsCallable{publicObjectcall(){Objectresult=null;//Simulatelong-runningoperationthatcalculatesresultwhile(true){...if(Thread.interrupted()){thrownewInterruptedException();}}result=...//somet

java - 当线程被中断时,BlockingQueue 方法是否总是抛出 InterruptedException?

在我的一个Java6应用程序中,我有一个线程向主线程提供数据,同时还从数据库中预取更多记录。它使用ArrayBlockingQueuequeue作为一个FIFO缓冲区,它的主循环是这样的:while(!Thread.interrupted()){if(source.hasNext()){try{queue.put(source.next())}catch(InterruptedExceptione){break;}}else{break;}}有些代码会在循环终止后进行一些清理,例如污染队列和释放任何资源,但这几乎就是全部。就目前而言,没有从主线程到供给线程的直接通信:供给线程使用适当的

java - ExecutorService.shutdownNow() 不关闭线程

我正在运行一个高度并发的Java程序。当许多线程向执行程序服务提交任务时,主线程会在某个时刻调用ExecutorService.shutdownNow()。执行此操作后,我希望:执行者服务不会接受额外的任务执行者服务的队列清晰其余运行的worker被中断,也就是说,如果他们正确管理InterruptedException和/或显式检查Thread.currentThread().isInterrupted()由于我处于以下情况:执行程序服务由于ExecutorService.shutdownNow()而“关闭”,但并未关闭,即ExecutorService.awaitTerminati