Java线程池就像数据库连接池一样是一个对象池我们在使用的时候需要不断的学习这样才能不断的适应相关语言技术的变化所有的对象池都有一个共同的目的那就是为了提高对象的使用率从而达到提高程序效率的目的
比如对于Servlet它被设计为多线程的(如果它是单线程的你就可以想象当个人同时请求一个网页时在第一个人获得请求结果之前其它个人都在郁闷地等待)如果为每个用户的每一次请求都创建一个新的线程对象来运行的话系统就会在创建线程和销毁线程上耗费很大的开销大大降低系统的效率因此Servlet多线程机制背后有一个Java线程池在支持线程池在初始化初期就创建了一定数量的线程对象通过提高对这些对象的利用率避免高频率地创建对象从而达到提高程序的效率的目的
下面实现一个最简单的Java线程池从中理解它的实现原理为此我们定义了四个类它们的用途及具体实现如下
Task(任务)这是个代表任务的抽象类其中定义了一个deal()方法继承Task抽象类的子类需要实现这个方法并把这个任务需要完成的具体工作在deal()方法编码实现Java线程池中的线程之所以被创建就是为了执行各种各样数量繁多的任务的为了方便线程对任务的处理我们需要用Task抽象类来保证任务的具体工作统一放在deal()方法里来完成这样也使代码更加规范
Task的定义如下
Java代码
public abstract class Task {
public enum State {
/* 新建 */NEW /* 执行中 */RUNNING /* 已完成 */FINISHED
}
// 任务状态
private State state = StateNEW;
public void setState(State state) {
thisstate = state;
}
public State getState() {
return state;
}
public abstract void deal();
}
public abstract class Task {
public enum State {
/* 新建 */NEW /* 执行中 */RUNNING /* 已完成 */FINISHED
}
// 任务状态
private State state = StateNEW;
public void setState(State state) {
thisstate = state;
}
public State getState() {
return state;
}
public abstract void deal();
}
以上就是对Java线程池的相关代码介绍