package com.jackson.common.source;
import com.jackson.db.po.Url;
import com.jackson.reservoir.HttpGetPool;
import com.jackson.reservoir.HttpPostPool;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.concurrent.ScheduledThreadPoolExecutor;
/**
* Created by Jackson on 2016/12/20.
*/
public class CommonSource {
private HttpGetPool httpGetPool;
private static Logger logger = LogManager.getLogger(CommonSource.class.getName());
private HttpPostPool httpPostPool;
private CommonSource(){}
public static CommonSource newInstance(){
return new CommonSource();
}
public HttpRequestBase pollHttpGet(Url url){
createHttpGetPool();
return httpGetPool.poll(url);
}
public void offerHttpGet(HttpGet request){
createHttpGetPool();
httpGetPool.offer(request);
}
public HttpGetPool getHttpGetPool(){
createHttpGetPool();
return httpGetPool;
}
public HttpPostPool getHttpPostPool(){
createHttpPostPool();
return httpPostPool;
}
public HttpPost pollHttpPost(Url url){
createHttpPostPool();
return httpPostPool.poll(url);
}
public void offerHttpPost(HttpPost httpPost){
createHttpPostPool();
httpPostPool.offer(httpPost);
}
/**
* 线程池
*/
private ScheduledThreadPoolExecutor executor;
public ScheduledThreadPoolExecutor getThreadPool() {
if (executor == null) {
synchronized (ScheduledThreadPoolExecutor.class){
if(executor==null){
logger.debug("创建 ThreadPool");
executor = new ScheduledThreadPoolExecutor(10);
}
}
}
return executor;
}
private void createHttpGetPool(){
if(httpGetPool == null){
synchronized (HttpGetPool.class){
if(httpGetPool == null){
logger.debug("创建 HttpGetPool");
httpGetPool = new HttpGetPool();
}
}
}
}
private void createHttpPostPool() {
if(httpPostPool == null){
synchronized (HttpPostPool.class){
if(httpPostPool == null){
logger.debug("创建 HttpPostPool");
httpPostPool = new HttpPostPool();
}
}
}
}
}