【问题标题】:How can I pass data to thread System.in and how can I get data from thread System.out?如何将数据传递给线程 System.in 以及如何从线程 System.out 获取数据?
【发布时间】: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


【解决方案1】:

您可以使用Exchanger 交换数据。 另一种方法是实现BlockingQueue

【讨论】:

    猜你喜欢
    • 2016-11-23
    • 1970-01-01
    • 2018-01-30
    • 2012-07-24
    • 2011-09-04
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多