runnable
实现Runnblle接口, 编写run方法,无返回值
callable
实现Callable接口,编写call方法,有返回值
返回Future对象
Future.isDone() // 判断线程是否执行完, 执行完成返回true
Future.get() // 获取返回值。当执行get时没有判断isDone(),这时将阻塞,直到结果准备就绪。
Executor 线程池
cachedThreadPool
可以为每个任务创建一个线程。
创建:静态的Executors创建
ExecutorService exec = Executors.newCachedThreadPool();
添加任务
exec.execute(new runnable实现()) 无返回值
exec.submit(new callable实现()) 返回Future
shutdown() 方法执行后不能不能在往线程池中添加任务。
FixedThreadPool
预先执行指定数量的代价高昂的线程分配。不用每次添加任务都付出一次创建线程的开销。
创建:静态的Executors创建
ExecutorService exec = Executors.newFixedThreadPool();
添加任务
exec.execute(new runnable实现()) 无返回值
exec.submit(new callable实现()) 返回值Future
shutdown() 方法执行后不能不能在往线程池中添加任务。