第一节
线程池:1.线程池在包java.util.concurrent.Executors
2.常用方法 newCachedThreadPool();创建一个根据需要创建新线程的线程池,但是以前的线程可用时将重用他们
newFixedThreadPool(int sun);创建一个可重用的固定线程数的线程池
newSingleThreadScheduledExecutor();就像 newFixedThreadPool(1)创建单个线程,确保任意时刻任何线程中都只有唯一的任务在运行,
如果向newSingleThreadScheduledExecutor提交了多个任务,那么这些任务将按照提交顺序排队执行。
ExecutorService(具有服务生命周期的Executor)对象的使用:java.util.concurrent.ExecutorService
创建:ExecutorService exec=Executors.newCachedThreadPool();
常用方法:1. exec.execute(new 线程对象);
2. exec.shutdown(); 启动一次顺序关闭,执行以前提交的任务,阻止新任务进入
3. exec.submit(线程对象/callablb对象);将 参数对象 提交用于执行,并返回一个表示该任务的Future<>对象
Callable接口的使用:java.util.concurrent.Callable;
Runnable是执行的独立任务,但是他不返回任何值;如果想要任务执行完毕后能有返回值,可以实现Callable接口;由call()方法代替run();
Callable是一种具有类型参数的泛型,它的类型参数表示 call()的返回值类型,并且必须使用ExecutorService.submit()调用Callable
Future的isDone() 如果任务执行完成,则返回true,get() 得到值