【发布时间】:2020-05-18 13:55:30
【问题描述】:
我正在学习 java 中的执行器服务。 要求是使用执行器服务创建 4 个线程 -
线程 1 - 获取两个数字作为输入。
线程 2 - 两个数字相加
线程 3 - 两个数字的乘法
线程 4 - 打印结果。
线程 1 应该先执行,线程 1 完成后线程 2、3 可以同时开始处理,最后线程 2、3 完成。线程 4 应该最终运行。
我们如何确定哪个线程首先启动以及接下来同时启动哪些线程。最后执行哪个线程。
注意:我们如何在不使用线程睡眠的情况下实现这一点。线程 1 完成后动态地立即启动其他两个线程。
【问题讨论】:
-
线程 1 可以启动线程 2 和 3(也可能是线程 4)。线程 4 可以加入所有线程。
-
您尝试了哪些方法,哪些方法无效?
-
仅供参考,这个练习可能会教你一些关于如何使用线程的知识,但它绝对是为什么使用线程的最糟糕的例子。这就像,有人教你如何操作汽车,让你使用汽车的前保险杠将钉子钉在你正在建造的一件家具上。我是认真的。这个例子那个不好。如果一个程序需要以某种顺序执行某些事情,那么唯一正确的方法就是在一个线程中完成所有这些事情。线程的全部意义在于使您能够并发(这意味着,没有特定的顺序。)
-
另请注意:不要将执行程序服务视为创建线程的一种方式。将其视为执行后台任务的一种方式。 执行器服务的全部意义在于尽可能地让您不必考虑它用来执行的“工作线程”你的任务。
标签: java multithreading java-8 executorservice scheduledexecutorservice