2014-02-08 53 views
0

我正在使用java。我能够使用包名获取类名,并通过启动类并通过使用invoke属性运行方法来获取特定类中的所有方法,从而能够依次顺序地运行这些方法。使用线程并行运行方法

Class c = Class.forName(Package.ClassName); 
Object obj = c.newInstance(); 
Method[] method = c.getDeclaredMethods(); 
for(Method m1 : method) 
{ 
for(String sfunctionname :sFunctionName) 
if(sfunctionname.equals(m1.getName())) 
{ 
System.out.println("Method Name " + m1.getName()); 
mth = m1.getName(); 
meth = (Method) obj.getClass().getMethod(sfunctionname); 
    meth .invoke(obj) 
    } 
    } 

这些类的结构定义如下

private void class1() 
{ 
    method1(); 
    method2(); 
    method3(); 

} 
private void class2() 
{ 
    method1(); 
    method2(); 
    method3(); 
} 

等.............

现在我想运行这些类(假设每个类都是一个测试用例),即第一个线程中一个类的所有方法,第二个线程中第二个类中的所有方法等等。 class1中的所有方法都应该添加到一个线程中,执行 与class2相同的所有属于它的方法都应该执行在第二个线程中并行,所以..在..

如何使用多线程。我已经通过文档,但无法得到如何使用callablehere。

注意内部一个方法依赖于它所属的类中的其他方法应该依次运行(可选:返回一些值)。

请任何人可以指导我在正确的方向

在此先感谢

回答

2

你可以简单地循环,并创建线程

for (final String className : classNameList) { 
    new Thread(new Runnable() { 
     void run() { 
      Class c = Class.forName(className); 
      ... 

     } 
    }).start(); 
} 

不过,我会建议你不要使用多线程,除非你真的理解多线程和它的副作用。

+0

+1或将它们添加到线程池。 –

+0

@Zapl感谢您的回复 –

相关问题