我有一个用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/