java - 按特定顺序运行线程

标签 java

我有问题。 我刚刚开始使用 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() 方法中,我还键入了 notificationAll() 和 wait() 方法。但它并没有像它应该的那样工作,即:

t1
t2
t3
t1
t2
t3
...

各位有什么建议吗?我将不胜感激。

tldr:如何通知t2在t1之后启动,t3在t2之后启动,t1在t3之后启动,依此类推?

最佳答案

仅使用 Thread 类的最简单解决方案:

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

但这真的有帮助吗?如果您无论如何都想按顺序运行它们,为什么还要将它们创建为线程呢?

关于java - 按特定顺序运行线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36703914/

相关文章:

java - 当查询父级时,子级也被获取,Hibernate

java - Swing JTextField 文本更改监听器 DocumentListener 无限循环

java - 如何在java中读取大的.xls文件?

java - 如何从 Angular 应用程序打开桌面应用程序?

java - Android 解压zip文件

java - 我的程序似乎写得很完美,但停止运行并允许用户在没有扫描仪的情况下输入?

java - 如何解决Gradle错误找不到符号

java - Quarkus 响应式(Reactive) vs quarkus 命令式有关系吗?

java - 带有 Cocoon 的 JSF

java - 我应该把 META-INF 放在 Gradle 的什么地方?