4)利用线程池创建多线程的方式
Executors.newFixedThreadPool(3).execute(new Runnable() {
@Override
public void run() {
System.out.println("newFixedThreadPool_" + Thread.currentThread().getName());
}
});
Executors.newCachedThreadPool().execute(new Runnable() {
@Override
public void run() {
System.out.println("newCachedThreadPool_" + Thread.currentThread().getName());
}
});
Executors.newScheduledThreadPool(3).execute(new Runnable() {
@Override
public void run() {
System.out.println("newScheduledThreadPool_" + Thread.currentThread().getName());
}
});
二
Callable/Runnable区别
实现方法名称不一样,Callable规定的方法是call(),Runnable规定的方法是run()。
Callable的任务执行后可返回值,而Runnable的任务是不能返回值得。
call()可以抛出异常,run()不可以。
运行Callable任务可以拿到一个Future对象,表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。通过Future对象可以了解任务执行情况,可取消任务的执行,还可获取执行结果。
|