package guang.crawler.jsonServer; import java.util.concurrent.locks.ReentrantReadWriteLock; /** * 对JSON服务器线程池中的线程进行控制.主要是希望在需要关闭线程的时候,这些线程都能够直接返回,不工作了. * * @author sun * */ public class AcceptThreadController { /** * 控制类型为:立刻关闭 */ public static final byte TYPE_SHUTDOWN_NOW = 0; /** * 控制类型为:合理的关闭 */ public static final byte TYPE_SHUTDOWN_GRACEFULLY = 1; /** * 控制类型为: 正在运行 */ public static final byte TYPE_START = 2; /** * 控制类型 */ private byte type; private ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); /** * 创建一个线程控制器,默认的控制类型为{@link #TYPE_START} */ public AcceptThreadController() { this.type = AcceptThreadController.TYPE_START; } /** * 获取当前的控制类型 * * @return */ public byte getType() { this.lock.readLock() .lock(); byte result = this.type; this.lock.readLock() .unlock(); return result; } /** * 设置当前的控制类型 * * @param type */ public void setType(final byte type) { this.lock.writeLock() .lock(); this.type = type; this.lock.writeLock() .unlock(); } }