java - 如何在Java中创建多个线程?

标签 java multithreading

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

相关文章:

java - 无法从 Saxon XSLT 处理器访问更新的 Java 对象

c++ - boost fibers work_stealing 屏障导致段错误

java - 启动画面中的线程

java - 合并两个带音频和不带音频的剪辑会导致音频从生成的视频的开头开始

java - 有没有在 java 中读取 mdict *.MDX 文件的库?

java - java 1.4 的 XPath 替代品

java - 在对象上通知后返回同步块(synchronized block)后java的行为是什么

c - 信号量的有效使用?

java - 如何加快 Camel 路线

java - tf*idf 实现?