我有一个关于多线程的问题。我还是新手。
我有一个主程序,其唯一的功能是调用输入线程和打印机线程,然后它什么都不做。
输入线程检查控制台中是否有输入。如果是,它应该打断打印机线程。除非它是" q",否则输入线程将进入休眠状态,然后再次检查是否还有输入
打印机线程应该检查它是否被中断。如果是,它应该打印输入。
我认为我可以使用通知作为替代方案,但我也不知道如何使用通知。
这是我的代码。它目前出现错误
import java.util.Scanner;
public class Q2 {
public static void main(String[] args) {
/* creating a new thread and starting it */
Thread InThread = new Thread(new InputThread());
Thread PrintThread = new Thread(new PrinterThread());
InThread.start();
PrintThread.start();
}
}
class InputThread implements Runnable {
public static String theLine;
/* constructor for thread */
public InputThread() {
}
public void run() {
Scanner scan = new Scanner(System.in);
try {
System.out.println("Enter an input: ");
System.out.println("Press <Q> to exit");
theLine = scan.nextLine();
while (!theLine.equalsIgnoreCase("Q")) {
notify();
Thread.sleep(3000);
theLine = scan.nextLine();
}
System.out.println("String input complete...");
} catch (Exception e) {
System.out.println("Error has occured!");
}
return;
}
}
class PrinterThread implements Runnable {
/* constructor for thread */
public PrinterThread() {
}
public void run() {
while (true) {
try {
wait();
if(!InputThread.theLine.equalsIgnoreCase("Q")){
System.out.println(InputThread.theLine);
}else{
return;
}
}catch(InterruptedException e){
System.out.println("Thread was interrupted");
return;
}
}
}
}
在这种情况下,我大多不知道如何使用notify(),wait()和interrupt()。