Future,CompletionService ╰半橙微兮° 2021-11-23 11:28 279阅读 0赞 RunnableFuture:实现是FutureTask 各类submit,invokeAll,invokeAny都是封装和执行FutureTask并返回用户FutureTask,在执行完成后需设置结果和唤醒等待线程 invokeAll等待全部完成,invokeAny等待任一完成,当然也提供限时等待方法 FutureTask:含volatile state,Callable,outcome(可能是结果对象或异常对象),运行线程,WaitNode(单向链表,含等待结果的线程) NEW -> COMPLETING -> NORMAL NEW -> COMPLETING -> EXCEPTIONAL NEW -> CANCELLED //cancel(false) NEW -> INTERRUPTING -> INTERRUPTED //cancel(true),会中断正在运行的线程 FutureTask的run:运行任务,改变状态,设置结果,唤醒等待线程,运行done方法 CompletionService,实现ExecutorCompletionService, 可获取下一个完成的任务,即QueueingFuture(也是一个FutureTask)包装一个原始FutureTask,QueueingFuture的done方法把原始FutureTask放入阻塞队列,用户从阻塞队列获取
还没有评论,来说两句吧...