2014-02-08 4 views
0

자바를 사용하고 있습니다. 패키지 이름을 사용하여 클래스 이름을 가져올 수 있고 특정 클래스의 모든 메서드를 가져오고 클래스를 초기화하고 invoke 속성을 사용하여 메서드를 차례로 실행할 수 있습니다. 메서드를 순차적으로 실행할 수 있습니다.스레딩을 사용하여 병렬 방식으로 실행

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

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

............. 지금 내가 이러한 클래스를 실행하려면 다음과 같이

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

이러한 클래스의 구조를 정의 (각 클래스가 하나의 테스트 케이스라고 가정) 병렬로, 즉 첫 번째 스레드에서 두 번째 클래스에있는 두 번째 클래스의 메서드와 같은 모든 클래스의 메서드. 클래스 1의 모든 메서드를 하나의 스레드에 추가해야합니다. 클래스 2와 동일한 모든 메소드가 실행되어야합니다. 두번째 스레드에서 병렬로 .. so .. on

멀티 스레딩을 사용하는 방법. 나는 문서를 통해 갔지만 callablehere를 사용하는 방법을 알 수는 없었다.

내부적으로 하나의 메소드는 클래스의 다른 클래스에 종속적인데, 이는 속한 순서대로 실행되어야합니다 (옵션 : 일부 값 반환).

아무도 당신은 단순히 루프 스레드

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

     } 
    }).start(); 
} 

를 만들 수 있습니다 사전

답변

2

에 올바른 방향으로

덕분에 저를 안내 할 수하십시오 그러나 나는 당신이 정말하지 않는 한 멀티 스레딩을 사용하지 않는 제안 멀티 스레딩을 이해하고 그것이 부작용입니다.

+0

+1 또는 스레드 풀에 추가했습니다. –

+0

답장을 보내 주셔서 감사합니다. –