我有一个用 Java 编写的聊天程序,它使用一个线程、一个客户端和多个可以联机并断开连接的客户端。 每个新用户都可以看到每个人并与每个人交谈,每个人都能看到他。 现在,我正在寻找一种在那里进行多次对话的方法。就像:第一个和第二个在私有(private)房间里,第三个和第四个在私有(private)房间里...... 我想用 ThreadGroup 这样做,但由于某种原因,我找不到可以解释我是否相关的文档...... 无论如何,这是正确的方法吗? 我究竟应该怎么做?
最佳答案
如果我对您的应用程序的理解正确,我不确定您是否需要线程(除非这是必需的)。
只需让每个用户注册到一个房间 - 这可以是一个简单的 Map
,其中房间作为键,用户列表作为值。一旦您需要向房间发送消息,只需获取该房间中的整个用户列表(不包括发送用户)并将消息发送给每个人。
如果你想使用线程,你需要一个稍微复杂一点的模型,类似于每个房间一个线程管理器,这可以通过一个简单的线程池和一个ExecutorService
,像这样:
ExecutorService es = Executors.newFixedThreadPool(3); // or whatever
for (Runnable r : someRunnableList)
{
es.execute(r);
}
(我强烈建议,如果您在应用程序中使用并发,请格外小心,确保您没有引入任何错误。修复并发错误可不是一件愉快的事情。
关于java - 如何在Java中创建多个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3175189/