gpt4 book ai didi

Java 线程未启动

转载 作者:行者123 更新时间:2023-12-01 17:30:07 25 4
gpt4 key购买 nike

我有一个 IRC 机器人,它托管给定一些参数的游戏服务器。问题是,一旦它托管了一台服务器,它就会停止监听 IRC(实际上意味着一次只能托管一台服务器)。这不是我想要的。

我认为线程可以解决我的问题,但我似乎无法让它工作。看来它实际上并不是在另一个线程中启动的?

这是我的主类,它通过线程启动并运行该方法:

// Everything is okay, run the server.
Runnable r = new Server(this, channel);
Thread thread = new Thread(r);
thread.start();

这是(大概)控制线程的 Server 类:

public class Server extends PircBot implements Runnable  {

public void run() {

}

public Server (bot BotRun, String channel) {
String names[] = org.bestever.bebot.bot.hostbuilder.split(" ");
ProcessBuilder pb = new ProcessBuilder(names);
pb.redirectErrorStream(true);
try {
Process proc = pb.start();
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String strLine = null;
while((strLine = br.readLine()) != null) {
// Returns UDP Initialized if the server was successfully started
if (strLine.equalsIgnoreCase("UDP Initialized.")) {
BotRun.sendMessage(channel, "Server started successfully.");
}
// Returns Bad Hex Number if there is a problem with the WAD file
else if (strLine.startsWith("Bad hex number")) {
BotRun.sendMessage(channel, "Error starting server: "+strLine);
}
System.out.println(strLine);
}
Thread.currentThread().interrupt();
} catch (IOException e) {
e.printStackTrace();
}
}

我实际上没有在线程中启动它吗?感谢您的帮助!

最佳答案

恐怕不是。

服务器类应该更像:

public class Server extends PircBot implements Runnable {

private bot BotRun;
private String channel;
public void run() {
String names[] = org.bestever.bebot.bot.hostbuilder.split(" ");
ProcessBuilder pb = new ProcessBuilder(names);
pb.redirectErrorStream(true);
try {
Process proc = pb.start();
Reader reader = new InputStreamReader(proc.getInputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String strLine = null;
while((strLine = br.readLine()) != null) {
// Returns UDP Initialized if the server was successfully started
if (strLine.equalsIgnoreCase("UDP Initialized.")) {
BotRun.sendMessage(channel, "Server started successfully.");
}
// Returns Bad Hex Number if there is a problem with the WAD file
else if (strLine.startsWith("Bad hex number")) {
BotRun.sendMessage(channel, "Error starting server: "+strLine);
}
System.out.println(strLine);
}
reader.close();
Thread.currentThread().interrupt();
} catch (IOException e) {
e.printStackTrace();
}
}

public Server (bot BotRun, String channel) {
this.BotRun = BotRun;
this.channel = channel;
}
}

关于Java 线程未启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11910775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com