CallableとRunnableの違い
5023 ワード
class c implements Callable<String>{
@Override
public String call() throws Exception {
return null;
}
}
class r implements Runnable{
@Override
public void run() {
}
}
同じ点:
1、どちらもインターフェイス
2、両方ともThreadを呼び出す必要がある.start起動スレッド
相違点:
1、上記のコードに示すように、callableのコアはcallメソッドであり、戻り値を許可し、runnableのコアはrunメソッドであり、戻り値はない
2、callメソッドは異常を投げ出すことができますが、runメソッドはできません
3、runnableはjava 1だから.1があるので、戻り値は存在しません.後期はjava 1です.5を最適化すると、callableが現れ、戻り値と投げ異常が発生します
4、callable、runnableはexecutorsに適用できます.threadクラスはrunnableのみをサポートします
テスト:スレッドプールを使用して実行
public static void main(String[] args) throws Exception{
//1
// Executors
ExecutorService service = Executors.newFixedThreadPool(10);
//2 runnable
service.submit(new Runnable() {
@Override
public void run() {
}
});
//3 callable
service.submit(new Callable<String>() {
@Override
public String call() throws Exception {
return null;
}
});
//4
service.shutdown();
}