2012-01-06 59 views
0

假设我有一些从输入中读取的x个测试用例,其中每个测试用例参数都跟着。 如何创建一个新线程并在其中运行一个测试用例,并最终按照测试用例顺序打印结果。在不同的线程中运行测试用例以减少执行时间

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

从System.in这里第一数目给出测试用例的数量,然后用3测试的情况下,在每个测试用例一线包含许多其示出了输入值等的NUM, 假设每个的逻辑是打印总和,这里的结果将是6 3 55

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

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

回答

1

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

或者我不明白你的问题。我建议你看看ThreadPoolExecutor和/或期货。

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

+0

也许如果你展示了一些代码,并且实际的例子会更容易创建。 – 2012-01-06 05:11:07

+0

其实我正在试图做到这一点,https://gist.github.com/1565740, – cypronmaya 2012-01-06 13:47:57

0

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

+0

对不起,我其实要求运行的程序,而不是用于测试目的,或选择JUnit。一个带阴影部分的程序作为输入提供输出。我更像是要求用线程优化一个程序,例如 – cypronmaya 2012-01-06 04:22:03