【发布时间】:2018-10-01 06:47:50
【问题描述】:
假设我有 3 个实现 Runnable 接口的线程,我使用以下语句启动它们。
t1.start();
t2.start();
t3.start();
有什么方法可以使用join()、wait()、notify() 组合使线程以 t3 、t2、t1 的顺序结束?
【问题讨论】:
-
不清楚。线程通常会在其
run方法终止时终止。你到底想达到什么目的? -
鉴于线程是同时启动的,我需要一个工作代码,使线程使用 join/wait/notify 以上述顺序结束。
-
这是您已经告诉我们的。我问你:你想解决什么问题?线程异步运行。那么,为什么要考虑排序,尤其是结束这些线程的命令呢?你的问题看起来像XY problem。
-
您可以通过多种方式执行此控制流。你想要一个生产者消费者模型吗?或者您可以使用信号量或倒计时锁存器?为什么你有3个线程?你需要5个线程吗?您需要什么样的控制,例如 t1 如何知道何时完成以及 t3 等。
-
所以你要做的不是以特定的顺序结束,而是以特定的顺序开始
标签: java multithreading