我是编程初学者。我仍在学习线程以及更多线程。但现在我有一个很大的想法来编写我的第一个程序(我的意思是比简单的计算器更大)。我希望它对文件进行排序,集成到一个文件中(一个文件在不同本地化中的多个副本 - 现在它的想法并不重要)。
但是我想创建线程,或者其他任何东西(你的建议是什么)。我是说。当我启动程序时,控制台启动,例如我必须编写“my_programm run”或“my_program stop”或“my_program status”或“my_magic_tricks be_done”。我的意思是如何创建一个在后台工作的程序,例如在线程中对其进行实时字符串控制。 我试图在 Google 上查找任何对我有用的信息,但没有找到。
请给我一个我可以使用的库或方法的名称。我会读出它的内容,最后我会继续它。
如果这是一个愚蠢的问题。让程序员组失望了,真的很抱歉。但如果能提供任何路标或线索那就太好了。
最佳答案
使用标准库的简单方法:
import java.util.Scanner;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.ThreadPoolExecutor;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
public class Example {
private static final int POOL_SIZE = 5;
private static final ExecutorService WORKERS = new ThreadPoolExecutor(POOL_SIZE, POOL_SIZE, 1, MILLISECONDS, new LinkedBlockingDeque<>());
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print("> ");
String cmd = sc.nextLine();
switch (cmd) {
case "process":
WORKERS.submit(newExpensiveTask());
break;
case "kill":
System.exit(0);
default:
System.err.println("Unrecognized command: " + cmd);
}
}
}
private static Runnable newExpensiveTask() {
return () -> {
try {
Thread.sleep(10000);
System.out.println("Done processing");
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
};
}
}
此代码允许您异步运行繁重的任务,同时用户终端保持可用和 react 性。
关于JAVA实时控制台-控制线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36781166/