Java多线程:作业调度

时间:2011-05-03 05:04:12

标签: java multithreading

我有两个工作J3 & J5,其中,

  1. J3仅在完成工作J1& J2
  2. J5仅在完成作业J4
  3. 后启动
  4. 这两个作业(J3 & J5)需要在两个不同的线程中执行。
  5. J3 & J5个帖子需要同时运行
  6. 如何用Java编程?

3 个答案:

答案 0 :(得分:3)

J1,J2和J4也是线程吗?您可以将它们传递给其他工作并使用Thread.join()等待它们完成。例如前3个线程:

Thread j1 = new Job1Thread();
Thread j2 = new Job2Thread();
Thread j3 = new Job3Thread(j1, j2);
// start them up, etc.

public class Job3Thread extends Thread {
    private final Thread j1;
    private final Thread j2;

    public Job3Thread(Thread j1, Thread j2) {
        this.j1 = j1;
        this.j2 = j2;
    }

    public void run() {
        try {
            j1.join();
            j2.join();
            // now start processing
        } catch (InterruptedException ie) {
        }
    }
}

答案 1 :(得分:0)

您总是可以创建一个主线程来检查各个线程的状态。一旦看到J1& J2完成它然后触发J3。可以对J4和J5应用相同的逻辑。

J3和J5可以并行运行。

可以通过在线程中放置一个布尔值来确定状态,例如“running”。

答案 2 :(得分:0)

你没有说工作J1和J2必须是并发的,所以最简单的事情就是

// thread one
J1();
J2();
J5();

// thread two
J3();
J4();

让一个任务跟随另一个任务的最简单方法是将方法调用放在同一个线程中。 ;)