Java 线程程序,键入输入并停止;“你好,世界”;输入并一直输入另一个输入,直到您输入";退出;?
这是一个每三秒钟打印一次“Hello world!”的程序。您将获得一个输入框来写入消息,但是当我键入新的输入时,如何停止消息“Hello world!”?而每次我写一条新消息之前,消息也会停止写吗? 例如: 控制台输出: 你好,世界! 你好,世界! 你好,世界! 赢(然后我输入Win!并停止Hello world!) 赢(Win每三秒钟继续一次,直到我键入另一个输入文本)。 微笑!(新输入:微笑和“赢!”停止Java 线程程序,键入输入并停止;“你好,世界”;输入并一直输入另一个输入,直到您输入";退出;?,java,Java,这是一个每三秒钟打印一次“Hello world!”的程序。您将获得一个输入框来写入消息,但是当我键入新的输入时,如何停止消息“Hello world!”?而每次我写一条新消息之前,消息也会停止写吗? 例如: 控制台输出: 你好,世界! 你好,世界! 你好,世界! 赢(然后我输入Win!并停止Hello world!) 赢(Win每三秒钟继续一次,直到我键入另一个输入文本)。 微笑!(新输入:微笑和“赢!”停止 过去,除其他方法外,还有一个停止线程的stop()方法。这种方法不安全,已经被弃用。
过去,除其他方法外,还有一个停止线程的
stop()
方法。这种方法不安全,已经被弃用。解释了为什么以及应该使用什么来代替它。那么,我的编码示例看起来如何?@justanotherdeveloper如何使用一个最初设置为的全局消息
字符串“你好,世界!"
并确定由myThread
打印的内容。然后,您的输入线程将message
设置为新值,然后这将是每3秒打印一次的内容。如果您想停止原始myThread
。您可以将t1
中对它的引用传递给constructor的inputThread
,然后当您想要停止线程时,可以在该引用上调用stop
。
public class Main {
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread(new myThread());
Thread t2 = new Thread(new inputThread());
t1.start();
t2.start();
t1.join();
t2.join();
}
}
public class myThread implements Runnable {
private boolean stop = false;
public synchronized void stop() {
this.stop = true;
}
private synchronized boolean continues() {
return this.stop == false;
}
@Override
public void run() {
while(continues()) {
System.out.println("Hello world!");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
}
}
}
}
public class inputThread implements Runnable {
private boolean stop = false;
public synchronized void stop() {
this.stop = true;
}
private synchronized boolean continues() {
return this.stop == false;
}
@Override
public void run() {
while(continues()) {
String message = showInputDialog("Write your message, type quit to shut down!");
if(message.equals("quit")) {
break;
}
else {
System.out.println(message);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
}
}
}
}
}