【面试:并发篇11:多线程:任务分配】喝茶例子
00.前言
如果有任何问题请指出,感谢。
01.介绍
我们现在有一个任务是 喝茶,喝茶的前提是 必须完成:洗水壶(1min) 烧开水(15min) 洗茶壶(1min) 洗茶杯(2min) 拿茶叶(1min)
这时我们怎么分配任务才能使时间最短?
通过观察我们可以发现,洗水壶是烧开水的前提 除此之外其他的任务之间没有关系,故我们可以这样做 洗水壶 烧开水 烧开水其间可以进行 洗茶壶 洗茶杯 拿茶叶三个任务,故总耗时为16min
画图解释
02.代码
这里用秒表示分钟
import java.util.concurrent.CountDownLatch;
public class work1 {
public static void main(String[] args) throws InterruptedException {
q1();
}
private static void q1