2016-11-30 13 views
0

來自JCIP的摘要 -我將如何知道阻塞庫方法是否在他們自己的線程中執行?

任務不會在它們自己的線程中執行;他們借用線程 所擁有的線程池等服務.....

這就是爲什麼大多數阻塞庫方法只是拋出 InterruptedException來響應中斷。他們將永遠 在他們自己的線程中執行,..

考慮一個線程的代碼片段:

void run(){ 
    try{ 
     blockingQueue.put(...);   // statement 1 
    }catch(InterruptedException e){ 
     // exception handling.... 
    } 
} 

由於BlockingQueue.put()是一個阻塞方法,這是否意味着任務(聲明1)從不在它擁有的上述線程中執行?

回答

1

任務不會在線程中執行他們自己的

意味着一個任務沒有自己的線程本身,它只是執行它借用一個線程。也就是說,我們沒有辦法在沒有爲它分配線程的情況下啓動任務,因爲任務本身不能創建線程。

在您的代碼中,任務(語句1)在您爲其分配的線程(運行方法定位)中執行,任務(語句1)將不會在它自己的線程(創建)中執行。

相關問題