构造新线程的开销很大,因为这涉及与操作系统的交互。如果你的程序创建了大量生命期很短的线程,那么就不应该把每个任务写成单独的线程,而应该使用线程池。
2.1 Callable与Future
Callable 与 Runnable 类似,都只有一个方法,方法都以异步方式执行。不同的是,Callable 是泛型接口,它的 call 方法有返回值。
public interface Callabel<V> {
V call() throws Exception;
}
Future 保存异步计算的结果。