java 多线程简单的工具类





一、效果


二、工具类代码

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. import java.lang.reflect.InvocationTargetException;  
  2. import java.lang.reflect.Method;  
  3.   
  4. import org.apache.commons.logging.Log;  
  5. import org.apache.commons.logging.LogFactory;  
  6.   
  7. /** 
  8.  * 多线程工具类 
  9.  *  
  10.  * @author zhy 
  11.  * 
  12.  */  
  13. public class ThreadUtil implements Runnable {  
  14.     // 调用的class  
  15.     private Class<?> className;  
  16.       
  17.     // 处理的方法名  
  18.     private String methodName;  
  19.       
  20.     // 回调参数  
  21.     private Object[] params;  
  22.       
  23.     // 日志对象  
  24.     private static Log log = LogFactory.getLog(ThreadUtil.class);  
  25.       
  26.     /** 
  27.      * 线程的构造方法 
  28.      *  
  29.      * @author zhy 
  30.      * @param className 调用的类class 
  31.      * @param methodName 回调的方法名 
  32.      * @param params 回调传递的参数 
  33.      */  
  34.     public ThreadUtil(Class<?> className, String methodName, Object... params) {  
  35.         this.className = className;  
  36.         this.methodName = methodName;  
  37.         this.params = params;  
  38.     }  
  39.       
  40.     @Override  
  41.     public void run() {  
  42.         Method method = null;  
  43.         try {  
  44.             // 获取参数长度  
  45.             int paramsLen = params.length;  
  46.               
  47.             /* 获取方法参数类型 */  
  48.             Class<?>[] paramsClass = new Class<?>[params.length];  
  49.             for (int i = 0; i < paramsLen; i++) {  
  50.                 paramsClass[i] = params[i].getClass();  
  51.             }  
  52.               
  53.             // 获取回调方法  
  54.             method = className.getMethod(methodName, paramsClass);  
  55.             // 调用回电方法  
  56.             method.invoke(className.newInstance(), params);  
  57.         } catch (NoSuchMethodException e) {  
  58.             log.error("找不到该方法:" + e.getMessage(), e);  
  59.         } catch (SecurityException e) {  
  60.             log.error("安全出现异常:" + e.getMessage(), e);  
  61.         } catch (IllegalAccessException e) {  
  62.             log.error("非法进入异常:" + e.getMessage(), e);  
  63.         } catch (IllegalArgumentException e) {  
  64.             log.error("非法争议异常:" + e.getMessage(), e);  
  65.         } catch (InvocationTargetException e) {  
  66.             log.error("调用目标异常:" + e.getMessage(), e);  
  67.         } catch (InstantiationException e) {  
  68.             log.error("实例化异常:" + e.getMessage(), e);  
  69.         }  
  70.     }  
  71. }  

三、测试类

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. import java.util.HashMap;  
  2. import java.util.Map;  
  3.   
  4.   
  5. public class ThreadTest {  
  6.     public static void callBack(String message, HashMap<String, Object> message2) {  
  7.         System.out.println(message);  
  8.         System.out.println(message2);  
  9.     }  
  10.       
  11.     public static void main(String[] args) {  
  12.         Object[] str = new Object[2];  
  13.         Map<String, Object> message2 = new HashMap<String, Object>();  
  14.         message2.put("message""回调测试2");  
  15.           
  16.         str[0] = "回调同步方法测试";  
  17.         str[1] = message2;  
  18.           
  19.         ThreadUtil threadUtil = new ThreadUtil(ThreadTest.class"callBack", str);  
  20.         Thread thread = new Thread(threadUtil);  
  21.         thread.start();  
  22.     }  
  23. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值