小编zam*_*amN的帖子

如何让2个线程相互通信?

我目前正在用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 multithreading

7
推荐指数
1
解决办法
2857
查看次数

线程之间的同步ArrayList

我在理解如何在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,但我不太确定它是如何工作的,如果它适用于我的情况.

谢谢.

java multithreading arraylist

2
推荐指数
2
解决办法
2万
查看次数

标签 统计

java ×2

multithreading ×2

arraylist ×1