Java中的连续线程

时间:2009-10-21 17:17:49

标签: java multithreading

问候,

我正在尝试解决以下任务: 给定N个线程,使它们连续运行。例如,每个人都应按以下顺序输出数字:

线程1线程2 ...线程N

如何使用wait / notify和synchronized方法(没有标志等)?

P.S。抱歉我的英语不好:))

6 个答案:

答案 0 :(得分:7)

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

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

...

对.join()的调用将在继续之前等待线程完成。

答案 1 :(得分:3)

怎么样:

thread1.run();
thread2.run();
thread3.run();

除非需要并发执行,否则不需要新线程。单个线程可以连续执行Threads的主体。

如果这种简单的方法不起作用(即满足教师对人工作业的期望),请澄清问题中的问题。

答案 2 :(得分:1)

您是否尝试过joining个帖子?

我不会提供更多线索,因为这是一项功课。

答案 3 :(得分:0)

在伪代码中,它看起来像这样:

synchronized (var) 
{
  var.wait();
  print(var);
  var.notifyAll();
}

答案 4 :(得分:0)

我假设您无法编辑每个线程代码。所以这是

...
final Thread[] Threads = ...;
Thread aSuperThread = new Thread() {
    public void run() {
        for(Threads T : Threads)
            T.run();
    }
};
aSuperThread.start();
...

答案 5 :(得分:0)

你听说过执行官吗?

// create ExecutorService to manage threads                        
ExecutorService threadExecutor = Executors.newFixedThreadPool( 3 );
threadExecutor.execute( task1 ); // start task1
threadExecutor.execute( task2 ); // start task2
threadExecutor.execute( task3 ); // start task3

其中task1,task2和task3是实现runnable接口的对象。 自Java 5以来,执行程序可用 更多信息:http://www.deitel.com/articles/java_tutorials/20051126/JavaMultithreading_Tutorial_Part4.html