【发布时间】:2012-12-14 00:01:47
【问题描述】:
我有一个主线程和一个子线程,例如Thread childThread。
如何将数据传递给childThread System.in 以及如何从childThread System.out 获取数据?
【问题讨论】:
-
线程共享资源,因此它们没有自己的管道。您可以创建可以在线程之间共享的管道,但这不太可能是最佳解决方案。你能告诉我们你想做什么吗?
-
是的@PeterLawrey,我有
childThread,我想用JUnit 进行测试。childThread从键盘获取数据,比如命令。因此,当我启动mainThread并在此线程中启动childThread时,我想将数据传递给childThread,就像我用键盘输入一样。 -
可以模拟出 System.in 和 System.out,但最好设计代码以便对其进行单元测试。这也将消除对第二个线程的需要。相反,我建议您使用可以模拟或替换为控制台的界面。
-
没有。您必须更改代码才能使用接口。如果您必须使用 System.in,您可以破解替换 InputStream 类和 PrintStream(用于输出)并使用线程本地控件。以这种方式进行测试不仅很难编写,而且很难让交互正确,从而使测试变得健壮。
-
如果您使用接口,则不需要客户端+主线程,只需一个。
标签: java multithreading concurrency io