java 异步处理

public class AsynCallNewCachedThreadPool {

	private Logger logger = Logger.getLogger(AsynCallNewCachedThreadPool.class);

	public AsynCallNewCachedThreadPool() {

	}

	public static void addTask2ThreadPool(Object tagerobject,
			String methodname, Object[] params) {
		Method method = null;
		if(tagerobject != null){
			try {
				if (params == null || params.length == 0) {
					method = tagerobject.getClass().getMethod(methodname);
				} else {
					Class[] classies = new Class[params.length];
					for (int i = 0; i < params.length; i++) {
						classies[i] = params[i].getClass();
					}
					method = tagerobject.getClass().getMethod(methodname, classies);
				}
			} catch (NoSuchMethodException e1) {
				e1.printStackTrace();
			} catch (SecurityException e1) {
				e1.printStackTrace();
			}
		}
		
		// 开启新的线程
		if (method != null) {
			final Method finalmethod = method;
			final Object finaltagerobject = tagerobject;
			final Object[] finalparams = params;
			ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
			cachedThreadPool.execute(new Runnable() {
				public void run() {
					Logger logger = Logger
							.getLogger("com.util.AsynCallNewCachedThreadPool.Runnable.run");
					Object result = null;
					// do task
					try {
						if (finalparams == null || finalparams.length == 0) {
							result = finalmethod.invoke(finaltagerobject, null);
						} else {
							result = finalmethod.invoke(finaltagerobject,
									finalparams);
						}
						logger.info("Class:"
								+ finaltagerobject.getClass().getName()
								+ " method:" + finalmethod.getName()
								+ " params:" + finalparams + " "
								+ ObjectAndMap.Object2Map2String(finalparams)
								+ " result:" + result + " "
								+ ObjectAndMap.Object2Map2String(result));

					} catch (IllegalAccessException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} catch (IllegalArgumentException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} catch (InvocationTargetException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			});
			cachedThreadPool.shutdown();
		}
	}

}

调用:

Object[] params = new Object[] { citem };
AsynCallNewCachedThreadPool.addTask2ThreadPool(infoService, "fangfa1",params);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值