【问题标题】:running test cases in different threads for cutting execution time在不同线程中运行测试用例以缩短执行时间
【发布时间】:2026-01-26 00:35:01
【问题描述】:

假设,我有一些 x 测试用例要从输入中读取,其中每个测试用例参数都跟在后面。 如何创建一个新线程并在其中运行一个测试用例,最后按照测试用例的顺序打印结果。

Ex:
3 
3
1 2 3
2
1 2
10
1 2 3 4 5 6 7 8 9 10

这里 System.in 中的第一个数字给出了测试用例的数量,然后是 3 个测试用例,每个测试用例的第一行包含一个数字,显示输入值的数量等, 假设每个的逻辑是打印总和,这里的结果是 6 3 55

这通常可以通过顺序读取输入、执行方法、打印来完成。 当花费时间的操作会增加程序的执行时间时。 那么,我如何在不同的线程中运行每个测试用例,并将结果打印为 6 3 55 会做。线程结束时不应该打印。我希望我的英语可以理解...... 顺便说一句,类没有实例变量。

---这不是用于junit或其他测试目的。一个带有阴影部分的程序作为输入给出输出。我更像是要求针对这种情况使用线程优化程序

【问题讨论】:

    标签: java multithreading execution-time


    【解决方案1】:

    这听起来像是直截了当的 ThreadPoolExecutor http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ThreadPoolExecutor.html。您接受输入并构建一些可运行的对象。将其提交给 ThreadPoolExecutor,然后让输出显示在 System.out Runnable 完成。

    或者我不明白你的问题。我建议您查看 ThreadPoolExecutor 和/或 Futures。

    这家伙有很好的例子:http://www.vogella.de/articles/JavaConcurrency/article.html#threadpools

    【讨论】:

    • 如果你展示一些代码和实际的例子会更容易创建。
    【解决方案2】:

    如果您使用 junit 之类的工具设置测试用例,那么您可以并行运行测试(junit 对此具有内置支持)。此外,大多数以 java 为中心的构建工具(例如 maven、ant)都支持轻松运行 junit 测试。

    【讨论】:

    • 对不起,我实际上是在要求运行一个程序,不是为了测试目的,也不是为了 junit。一个带有阴影部分的程序作为输入给出输出。我更像是要求针对这种情况使用线程优化程序
    最近更新 更多