2012-03-01 7 views
0

私は、リフレクションを介してクラスオブジェクト内のメソッドを呼び出そうとしています。しかし、別のスレッドとして実行したい。誰かが私がmodel.javaまたはそれ以下のコードに加えなければならない変更を教えてもらえますか?メソッドとオブジェクトをJavaの別のスレッドとして呼び出す方法は?

thread = new Thread ((StatechartModel)model); 
Method method = model.getClass().getMethod("setVariable",newClass[]{char.class,t.getClass()}); 
method.invoke(model,'t',t); 
+0

? –

+0

可能な複製:http://stackoverflow.com/questions/3489543/how-to-call-a-method-with-a-separate-thread-in-java – Gray

+0

私の答えに関するコメントはありますか?それがあなたを助けたらそれを受け入れてください。 – Gray

答えて

2

あなただけの匿名Runnableクラスを作成したスレッドでそれを開始し、次のような何かを行うことができます。

final Method method = model.getClass().getMethod(
    "setVariable", newClass[] { char.class, t.getClass() }); 
Thread thread = new Thread(new Runnable() { 
    public void run() { 
     try { 
      // NOTE: model and t need to defined final outside of the thread 
      method.invoke(model, 't', t); 
     } catch (Exception e) { 
      // log or print exception here 
     } 
    } 
}); 
thread.start(); 
0

あなたはfinalとして利用できる、あなたのターゲットオブジェクトを持っていたら、私は簡単なバージョンを提案してみましょう:

final MyTarget finalTarget = target; 

Thread t = new Thread(new Runnable() { 
    public void run() { 
    finalTarget.methodToRun(); // make sure you catch here all exceptions thrown by methodToRun(), if any 
    } 
}); 

t.start(); 
は、スレッドを開始し、それに実行したいメソッドを実行します
関連する問題