在不同的线程中运行测试用例以缩短执行时间

时间:2012-01-06 04:04:28

标签: java multithreading execution-time

假设我有一些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或其他测试目的。一个带阴影部分的程序作为输入给出输出。对于像这样的案例,我更像是要求用线程优化程序

2 个答案:

答案 0 :(得分:1)

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

或许我不明白你的问题。我建议你研究一下ThreadPoolExecutor和/或Futures。

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

答案 1 :(得分:0)

如果使用junit等设置测试用例,则可以并行运行测试(junit内置支持)。此外,大多数以Java为中心的构建工具(例如maven,ant)都支持轻松运行junit测试。