runnable和callable的區別如下:
相同點:
1、都是接口;
2、都可以編寫多線程程序;
3、都採用Thread.start()啟動線程;
不同點:
1、Runnable沒有返回值;Callable可以返回執行結果,是個泛型,和Future、FutureTask配合可以用來獲取異步執行的結果;
2、Callable接口的call()方法允許拋出異常;Runnable的run()方法異常只能在內部消化,不能往上繼續拋;
注:Callalbe接口支持返回執行結果,需要調用FutureTask.get()得到,此方法會阻塞主進程的繼續往下執行,如果不調用不會阻塞。