java多线程使用反射向多线程传入方法示例
1.TestThread.java
import java.lang.reflect.Method;
public class TestThread {
public static String variables = "variables";
public static void main(String args[]) throws NoSuchMethodException {
//反射机制
Method method1 = TestThread.class.getMethod("method1", String.class);
ThreadDemo2 R1 = new ThreadDemo2("Thread-1", method1, new TestThread(), "message1 parama");
R1.start();
Method method2 = TestThread.class.getMethod("method2", String.class);
ThreadDemo2 R2 = new ThreadDemo2("Thread-2", method2, new TestThread(), "message2 parama");
R2.start();
}
public static void method1(String message) {
System.out.println(message);
//variables为static,method1中修改method2也能感知到
TestThread.variables = "method1修改variables";
System.out.println("method1中variables值:" + TestThread.variables);
}
public static void method2(String message) {
System.out.println(message);
//variables为static,method1中修改method2也能感知到
System.out.println("method2中variables值:" + TestThread.variables);
}
}
2.ThreadDemo2.java
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
class ThreadDemo2 extends Thread {
private Thread t;
private String threadName;
private Method method;
private TestThread testThread;
private String path;
ThreadDemo2(String name, Method method, TestThread testThread, String path) {
threadName = name;
System.out.println("Creating " + threadName);
this.method = method;
this.testThread = testThread;
this.path = path;
}
public void run() {
Object[] parameters = new Object[1];
parameters[0] = this.path;
System.out.println("Running " + threadName);
try {
this.method.invoke(this.testThread, parameters);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
System.out.println("Thread " + threadName + " exiting.");
}
public void start() {
System.out.println("Starting " + threadName);
if (t == null) {
t = new Thread(this, threadName);
t.start();
}
}
}
3.执行结果
Creating Thread-1 Starting Thread-1 Creating Thread-2 Starting Thread-2 Running Thread-1 Running Thread-2 message1 parama message2 parama method1中variables值:method1修改variables method2中variables值:method1修改variables Thread Thread-1 exiting. Thread Thread-2 exiting.

浙公网安备 33010602011771号