简易线程池
来自《Java并发编程的艺术》
一个简易的线程池的实现。三个类:ThreadPool线程池接口DefaultThreadPool线程池接口实现Worker工作线程
线程池的工作逻辑:
全部代码
package ConcurrencyArt;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.atomic.AtomicLong;
interface ThreadPool
2018-06-20
java并发
Future相关类解释
Future接口一个Future代表一个异步计算的结果。他提供了5个方法来确认计算是否完成,来等待异步任务的完成,来获取异步计算的结果。当计算完成,计算结果有且只能有通过get()方法来获取,并且会阻塞调用者线程直到异步计算的任务完成。取消只能通过cancel()方法。他提供了额外的方法来决定任务正常完成还是被取消。一旦一个计算任务完成,他将不再能够被取消。如果你要用Future是为了能够取消异步任务而不要他的返回结果,那么可以使用Future<?>并返回null作为异步任务的执行结果。
RunnableFuture接口表示一个可以run的Future, run方法的成功执行标识着
2018-06-19
java并发
Java线程池相关类解释,整理自Java文档
接口Executor:一个可以执行被提交的Runnable的对象。该接口提供了一种任务提交的解耦方案,体现在每个task如何运行,使用,调度等。Executor接口并不严格要求task的执行过程是异步的,在最简单的情况下,一个Executor可以直接将task放在调用者的线程中执行:
class DirectExecutor implements Executor{
public void execute(Runnable r){
r.run();
}
}但更常见的情况一般是:task会被放置在其他线程而非调用者线程执行。许多Executor接口的实现会给task如何以及何时被
2018-06-19
java并发