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);