0

JAVAで実行したいジョブが2つあります。私は持っています:

public static void main(String[] args) 
{
   takeInfofromDB();
   doSomeLongCalculationsWithThatData();

   takeInfofromDB2();
   doSomeLongCalculationsWithThatData2();

   GenerateAnswerFromBothAnswers();
}

どういうわけか2スレッドtakeInfofromDB();に入れることは可能ですか?doSomeLongCalculationsWithThatData();そしてGenerateAnswerFromBothAnswers();、少なくとも1つがまだ機能している間は実行できませんか?

4

2 に答える 2

0

このような...

public static void main(String[] args) 
{
   Thread t1 = new Thread(new Runnable() {
       public void run() {
           takeInfofromDB(); 
           doSomeLongCalculationsWithThatData();
       }});

   Thread t2 = new Thread(new Runnable() {
       public void run() {
         takeInfofromDB2();
         doSomeLongCalculationsWithThatData2();
       }});

   t1.start();
   t2.start();

   t1.join();
   t2.join();

   GenerateAnswerFromBothAnswers();
}
于 2013-03-18T06:50:21.630 に答える
0

非常に単純で軽量なアプローチについては、次のコードを試してください。ただし、スレッドと最終的にはエグゼキュータについて詳しく読むことをお勧めします:http: //docs.oracle.com/javase/tutorial/essential/concurrency/

Thread thread1 = new Thread() {
    private Object result;

    @Override
    public void run() {
        takeInfofromDB();
        result = doSomeLongCalculationsWithThatData();
    }

    public Object getResult() {
        return result;
    }
}

Thread thread2 = new Thread() {
    private Object result;

    @Override
    public void run() {
        takeInfofromDB2();
        result = doSomeLongCalculationsWithThatData2();
    }

    public Object getResult() {
        return result;
    }
}

thread1.start();
thread2.start();
thread1.join();
thread2.join();

Object result1 = thread1.getResult();
Object result2 = thread2.getResult();

GenerateAnswerFromBothAnswers(result1, result2);

このコードをそのまま実行するべきではありませんが(私はテストしていません。getResult前に呼び出すと奇妙なことが起こる可能性がありますjoin)、基本的な方法でスレッドを使用する方法の開始点として役立つはずです。

于 2013-03-17T18:44:31.757 に答える