我有疑问。 我刚刚开始使用Threads而且非常蹩脚。 我正在做一些任务。
我们说我有3个主题。每个线程的主要任务是从.txt写入1行,依此类推到文件末尾。 我设法做到了这一点,但我不知道如何正确使用wait()和notify()。 我的程序运行如下:
t1 writes line
t2 writes line
t1 writes line
t2 writes line
t3 writes line
t2
t1
t2
t3
t2
t1 ...
当我使用某个对象同步我的线程时。在每个新的Thread run()方法中,我也输入了notifyAll()和wait()方法。但它应该像它应该的那样工作,这是:
t1
t2
t3
t1
t2
t3
...
任何提示家伙?我会感激不尽。
tldr:如何通知t2在t1之后启动,t3之后是t3,t3之后是t1等等?
答案 0 :(得分:1)
使用Thread类的最简单的解决方案:
thread1.start();
thread1.join();
thread2.start();
thread2.join();
thread3.start();
thread3.join();
但这真的有帮助吗?如果你想顺序运行它们,为什么要将它们创建为线程呢?
答案 1 :(得分:0)
他们必须在后台工作并等待轮到他们。
在这种情况下,您可以让一个线程运行所有这些。
如何通知t2在t1之后启动,t3之后是t3,t3之后是t1等等?
new Thread(() -> {
thread1.run();
thread2.run();
thread3.run();
}).start();
这会在后台运行任务,一次一个。