[OCPJP]ExecutorService與Callable和Runnable的用法


Given the code fragments:

and

What is the result?

A. The program prints:

Run Runner
Call Caller : null

And the program does not terminate.
B. The program terminates after printing:

Run Runner
Call Caller : Run

C. A compilation error occurs at line n1.
D. An Execution is thrown at run time.

題解

程式第52行,會建立最多可以擁有兩個執行緒的ExecutorService。

程式第53行,會建立Caller物件,並使用新的執行緒去執行Caller物件的call方法。

程式第54行,會建立Runnable物件,並使用新的執行緒去執行Runnable物件的run方法。

程式第55行,會等待呼叫Caller物件的call方法的執行緒是否已經執行完畢,接著回傳call方法的回傳值。

程式第56行,會等待呼叫Runnable物件的run方法的執行緒是否已經執行完畢,接著回傳null。

在程式第54行至56行之間,某條ExecutorService的執行緒會執行到Runnable物件的run方法內的第23行,輸出「Run Runner」。

程式第57行,輸出「Call Caller : null」。

關於作者

Magic Len

各位好,我是Magic Len,是這網站的管理員。我是台灣台中大肚山上人,畢業於台中高工資訊科和台灣科技大學資訊工程系,曾在桃機航警局服役。我熱愛自然也熱愛科學,喜歡和別人分享自己的知識與經驗。如果你有興趣認識我,可以加我的Facebook,並且請註明是從MagicLen來的。

相關文章