java - 使线程跳过从其他线程读取输入操作

标签 java multithreading

我创建了 2 个线程,它们一起工作用于套接字连接:SocketIn 和 SocketOut(它们都在 while(true) 语句中工作。在某些时刻,我需要 SocketOut 线程停止等待键盘输入并继续执行以下操作说明,即使他读取了一个空值,我也需要在不关闭线程或退出 while(true) 的情况下执行此操作。我不知道该怎么做,所以我需要一些建议。

最佳答案

研究 CSP 编程和 BlockingQueue。您可以在接受“命令”的循环中使用队列。其中一个命令是从套接字输入的,另一个命令是从键盘输入的。

private final BlockingQueue<Command> inputChannel = new SynchronousQueue<>();

public void run() {
    while (true) {
        Command request = this.inputChannel.take();

        if (request instanceof Command.KeyboardInput) {
            ...

        } else {
            ...
        }
    }
}

关于java - 使线程跳过从其他线程读取输入操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38178648/

相关文章:

java - 在继续 JavaFX 之前更新您的 UI 并强制等待

Python-PyQt : Memory issue with QThread

java - 游标查询返回0

java - 根据值对 map 列表进行排序

java - 如何设置 JOptionPane 的位置?

java - 有没有办法让所有正在运行的线程在 Java 中 sleep ()?

Java EE 应用程序中用于后台服务的 Java 线程(设置守护进程和优先级)?

Linux:信号对多线程的影响

java - 在使用多个 OUT 参数调用 PLSQL 过程的 Java 方法中返回多个值

java - 从 JAX-RS servlet 动态创建图像