用java编写一个应用程序,在主线程中再创建两个线程,一个线程负责给出键盘上字母健上的字母,另一个线程负责让用户在命令行中输入所给出的命令。
时间: 2023-06-25 18:02:40 浏览: 230
下面是一个简单的Java代码示例,其中一个线程负责接收键盘输入,另一个线程负责处理命令行输入:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) {
// 创建一个线程来读取键盘输入
Thread inputThread = new Thread(() -> {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
while (true) {
try {
// 读取键盘输入
String input = reader.readLine();
// 将输入发送给另一个线程处理
CommandProcessor.processInput(input);
} catch (IOException e) {
e.printStackTrace();
}
}
});
// 启动输入线程
inputThread.start();
// 创建一个线程来处理命令行输入
Thread commandThread = new Thread(() -> {
while (true) {
// 处理命令行输入
CommandProcessor.processCommand();
}
});
// 启动命令线程
commandThread.start();
}
}
class CommandProcessor {
public static void processInput(String input) {
// 处理键盘输入
System.out.println("Received input: " + input);
}
public static void processCommand() {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try {
// 读取命令行输入
String command = reader.readLine();
// 处理命令行输入
System.out.println("Processing command: " + command);
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在上面的代码中,我们创建了一个 `Main` 类,它有两个静态方法,分别是 `main` 方法和 `CommandProcessor` 类的两个方法。
在 `main` 方法中,我们首先创建了一个线程 `inputThread`,它负责读取键盘输入,并将输入发送给另一个线程处理。我们使用匿名内部类的方式创建了这个线程,并在其中使用 `BufferedReader` 类来读取键盘输入。在读取到输入后,我们调用了 `CommandProcessor.processInput()` 方法来处理输入。
接着,我们创建了另一个线程 `commandThread`,它负责处理命令行输入。同样使用匿名内部类的方式创建线程,并在其中循环调用 `CommandProcessor.processCommand()` 方法来处理命令行输入。
最后,我们分别启动了这两个线程。
在 `CommandProcessor` 类中,我们定义了两个静态方法,分别是 `processInput` 和 `processCommand`。`processInput` 方法用于处理键盘输入,它只是简单地打印出接收到的输入。`processCommand` 方法用于处理命令行输入,它使用 `BufferedReader` 类来读取命令行输入,并打印出接收到的命令。注意,这里我们使用了 `System.in` 流来读取输入,因此 `processCommand` 方法会阻塞直到命令行有输入为止。
在这个简单的示例中,我们演示了如何使用 Java 来创建多线程应用程序,并在主线程中创建两个子线程来处理键盘输入和命令行输入。
阅读全文