java 多线程简单的工具类
2017-04-10 14:55
337 查看
一、效果
![](https://img-blog.csdn.net/20170410145810948?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpbGFpX3poaWx1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
二、工具类代码
三、测试类
二、工具类代码
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * 多线程工具类 * * @author zhy * */ public class ThreadUtil implements Runnable { // 调用的class private Class<?> className; // 处理的方法名 private String methodName; // 回调参数 private Object[] params; // 日志对象 private static Log log = LogFactory.getLog(ThreadUtil.class); /** * 线程的构造方法 * * @author zhy * @param className 调用的类class * @param methodName 回调的方法名 * @param params 回调传递的参数 */ public ThreadUtil(Class<?> className, String methodName, Object... params) { this.className = className; this.methodName = methodName; this.params = params; } @Override public void run() { Method method = null; try { // 获取参数长度 int paramsLen = params.length; /* 获取方法参数类型 */ Class<?>[] paramsClass = new Class<?>[params.length]; for (int i = 0; i < paramsLen; i++) { paramsClass[i] = params[i].getClass(); } // 获取回调方法 method = className.getMethod(methodName, paramsClass); // 调用回电方法 method.invoke(className.newInstance(), params); } catch (NoSuchMethodException e) { log.error("找不到该方法:" + e.getMessage(), e); } catch (SecurityException e) { log.error("安全出现异常:" + e.getMessage(), e); } catch (IllegalAccessException e) { log.error("非法进入异常:" + e.getMessage(), e); } catch (IllegalArgumentException e) { log.error("非法争议异常:" + e.getMessage(), e); } catch (InvocationTargetException e) { log.error("调用目标异常:" + e.getMessage(), e); } catch (InstantiationException e) { log.error("实例化异常:" + e.getMessage(), e); } } }
三、测试类
import java.util.HashMap; import java.util.Map; public class ThreadTest { public static void callBack(String message, HashMap<String, Object> message2) { System.out.println(message); System.out.println(message2); } public static void main(String[] args) { Object[] str = new Object[2]; Map<String, Object> message2 = new HashMap<String, Object>(); message2.put("message", "回调测试2"); str[0] = "回调同步方法测试"; str[1] = message2; ThreadUtil threadUtil = new ThreadUtil(ThreadTest.class, "callBack", str); Thread thread = new Thread(threadUtil); thread.start(); } }
相关文章推荐
- java 多线程简单的工具类
- 简单直观-实战体会Java多线程编程的精要 (3)
- 简单直观-实战体会Java多线程编程的精要 (5)
- java工具类简单介绍
- Java IO简单的工具类
- Java多线程简单示例
- 简单直观-实战体会Java多线程编程的精要 (1)
- socket ( java ) 简单多个客户端、服务端通信(多线程)
- java 并发包 多线程 工具类 笔记
- Java实例开发05-01 简单的多线程服务器
- java中线程的简单的线程的多线程的一个区别
- 简单直观-实战体会Java多线程编程的精要
- Java多线程-一个简单的线程,实现挂起和恢复的功能
- 简单的Java多线程演示
- Java简单多线程断点下载
- 简单直观-实战体会Java多线程编程的精要 (4)
- Java: 简单模拟多线程访问同样变量导致的问题
- Java多线程运行时,尽可能调用单例对象、工具类和静态方法,这样可以减少内存的占用量
- 记事本运行java文件实现简单的多线程
- Java多线程编程--(10)学习Java5.0 并发编程包--线程工具类