问候,
我正在尝试解决以下任务: 给定N个线程,使它们连续运行。例如,每个人都应按以下顺序输出数字:
线程1线程2 ...线程N
如何使用wait / notify和synchronized方法(没有标志等)?
P.S。抱歉我的英语不好:))
答案 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