来自JCIP的摘要-
任务不会在它们拥有的线程中执行;它们借用服务(如线程池)拥有的线程…… 这就是为什么大多数阻塞库方法只是在响应中断时抛出InterruptedException。他们永远不会在他们拥有的线程中执行。
考虑一下线程中的片段:
void run(){
try{
blockingQueue.put(...); // statement 1
}catch(InterruptedException e){
// exception handling....
}
}
由于BlockingQueue.put()
是一种阻塞方法,这是否意味着任务(语句1)永远不会在它拥有的上述线程中执行?
发布于 2017-02-09 08:12:34
任务不会在它们拥有的线程中执行。
意味着一个任务不拥有本身的线程(),它只在它借用的线程中执行。也就是说,不为任务分配线程是不可能的,因为任务本身不能创建线程。
在您的代码中,任务(语句1)在为其分配的线程(运行方法位于其中)中执行,任务(语句1)不会在它自己的线程中执行(创建)。
https://stackoverflow.com/questions/40889313
复制相似问题