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();
	}