私はいくつかの議論を与えられたゲームサーバーをホストするIRCボットを持っています。問題は、サーバーをホストすると、IRCのリッスンを停止することです(実際には、一度に1つのサーバーしかホストできません)。これは私が望むものではありません。
糸脱毛が私の問題の答えになると思いましたが、うまくいかないようです。実際には別のスレッドで開始されていないようですか?
これが、スレッド化を介してメソッドを開始および実行する私のメインクラスです。
// 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();
}
}
実際にスレッドで開始していませんか?助けてくれてありがとう!