【轉】說說Runnable與Callable 說說Runnable與Callable

說說Runnable與Callable

 

Callable接口:html

  View Code

 

Runnable接口:面試

  View Code

 

相同點:多線程

  1. 二者都是接口;(廢話)
  2. 二者均可用來編寫多線程程序;
  3. 二者都須要調用Thread.start()啓動線程;

 

不一樣點:post

  1. 二者最大的不一樣點是:實現Callable接口的任務線程能返回執行結果;而實現Runnable接口的任務線程不能返回結果;
  2. Callable接口的call()方法容許拋出異常;而Runnable接口的run()方法的異常只能在內部消化,不能繼續上拋;

 

注意點:測試

  • Callable接口支持返回執行結果,此時須要調用FutureTask.get()方法實現,此方法會阻塞主線程直到獲取‘未來’結果;當不調用此方法時,主線程不會阻塞!

 

Callable工做的Demo:url

  View Code

 

 

 

 

測試結果:spa

  View Code

 

 

 

 

Runnable工做的Demo:線程

  View Code

 

 

測試結果:3d

  View Code

 

 

寫此篇的緣由是一次面試中問到Callable與Runnable的區別,當時用的多的是Runnable,而Callable使用不多!code

比較了二者後(網上查了很多),發現Callable在不少特殊的場景下仍是頗有用的!最後留點抄的代碼,加深對Callable的認識!

  View Code

 

 
分類:  天天一點
相關文章
相關標籤/搜索