我目前正在用Java创建一个IRC机器人(我知道,那里有框架),我正在尝试将它连接到多个服务器.我遇到的问题不是连接部分,我只是在x线程中运行我的Connect类.每个线程都将bot连接到指定的服务器/端口.现在我的问题是,当用户输出某些文本时,机器人应该向通道发送消息"你输入了这个命令"(例如).现在我希望机器人向所有服务器发送消息,说"你输入了这个命令".这只是一个例子(这就是为什么它没有多大意义).
Connect f = new Connect(irc.freenode.net, 6667);
Thread ft = new Thread(f);
ft.start();
Connect q = new Connect(irc.quakenet.org, 6667);
Thread qt = new Thread(q);
qt.start();
Run Code Online (Sandbox Code Playgroud)
现在有了上面的示例代码,我希望在键入某些文本时,一个线程与另一个线程交谈.就像是:
if (lineReader.substring(lineReader.indexOf(":"), lineReader.length()).equals("hello")) {
message both servers "Hello World!"
}
Run Code Online (Sandbox Code Playgroud)
如果有人能提供帮助,我会非常感激.谢谢!
我在理解如何在java中的线程之间同步ArrayList时遇到了一些困难.目前我的代码如下:
Public class Runner {
public static void main(String argv[]) {
Connect f = new Connect(irc.freenode.net, 6667);
Thread ft = new Thread(f);
ft.start();
Connect q = new Connect(irc.quakenet.org, 6667);
Thread qt = new Thread(q);
qt.start();
MessageParser mp = new MessageParser(f);
MessageParser mp = new MessageParser(q);
f.addMessage("Hello!");
q.addMessage("World!");
}
}
public class Connect {
public List<String> l = new ArrayList<String>();
public static void addMessage(String str) {
l.add(str);
}
}
Run Code Online (Sandbox Code Playgroud)
这个例子只是为了展示我正在做的事情,这并不意味着有意义.无论如何,我想看看是否有可能让我的ArrayList'l'在两个线程之间同步.这样运行f.addMessage("Hello!"); 和q.addMessage("World!");,这两个消息都可以被任何一个类读取.我知道我可以很容易地创建一个单独的类来处理ArrayList并将它传递给两个Connect类但我想看看是否有另一种方法.我知道使用synchronizedList,但我不太确定它是如何工作的,如果它适用于我的情况.
谢谢.