不说啥了,直接上代码。。。。
public class PayPucChargeBillImpl implements PayManager {
@Test
public void testSendMsg() throws Exception {
MobileOrder mobileOrder = new MobileOrder();
MobileContext mobileContext = new MobileContext();
PayPucChargeBillImpl payBill = new PayPucChargeBillImpl();
MobileFundBillCollection collection = new MobileFundBillCollection();
FutureTask<MobilePublicPayEvent> futureTask = payBill.getFutureTask(mobileOrder,
mobileContext, collection);
Thread.sleep(10000);
if (futureTask.isDone() && !futureTask.isCancelled()) {
logger.info("-->>任务 完成<<--");
} else {
logger.info("-->>任务 没有 完成<<--");
}
}
/**
*/
class PucChargeCaller implements Callable<MobilePublicPayEvent> {
private MobileOrder mobileOrder = null;
private MobileContext mobileContext = null;
private MobileFundBillCollection mobileFundBillCollection = null;
public PucChargeCaller(MobileOrder mOrder, MobileContext mContext,
MobileFundBillCollection collection) {
this.mobileOrder = mOrder;
this.mobileContext = mContext;
this.mobileFundBillCollection = collection;
}
/**
* @return FutureTask<?>
* @throws Exception
* @see java.util.concurrent.Callable#call()
*/
public MobilePublicPayEvent call() throws Exception {
MobilePublicPayEvent payEvent = constractMobileEvent(mobileOrder, mobileContext,
mobileFundBillCollection);
publisherMsg(payEvent);
return payEvent;
}
}
/**
* 创建一个新的线程池
* @return ExecutorService
* @throws InterruptedException
* @throws ExecutionException
* @throws TimeoutException
*/
public ExecutorService getExecutorService() throws InterruptedException, ExecutionException,
TimeoutException {
int threadCount = Integer.parseInt(CTUCertEnum.THREADCOUNT.getCode());
if (null == es) {
es = Executors.newFixedThreadPool(threadCount);
}
return es;
}
/**
* 获取任务器
* @param mOrder
* @param mContext
* @return FutureTask<MobilePublicPayEvent>
* @throws Exception
*/
public FutureTask<MobilePublicPayEvent> getFutureTask(MobileOrder mOrder,
MobileContext mContext,
MobileFundBillCollection collection)
throws Exception {
PucChargeCaller caller = new PucChargeCaller(mOrder, mContext, collection);
es = getExecutorService();
FutureTask<MobilePublicPayEvent> futureTask = (FutureTask<MobilePublicPayEvent>) es
.submit(caller);
return futureTask;
}
}