线程Java留言板服务器

时间:2013-12-02 14:45:22

标签: java multithreading serversocket

我已经陷入了我正在尝试实施的线程留言板服务器上。我已经建立了连接并启动了线程,但是现在我仍然坚持如何设置任何事情,我的留言板被设置为一个双向链接的主题列表,它们本身由一个链表组成消息。 这个http://pastebin.com/uhcyxg2t是我的服务器类,而这个http://pastebin.com/taq5pV61是我的线程处理程序类。 我被困在listAllTopics(),它应该列出留言板上所有主题的标题,我不知道如何从我的主题列表对象获取信息到我的线程,以便它可以发送到客户端。 到目前为止,我唯一的想法是将主题列表作为线程的参数传递,但我不确定这是否会使所有线程中的主题列表保持相同(如果添加或更改)。 你能给我的任何帮助都将不胜感激。 感谢

2 个答案:

答案 0 :(得分:0)

List<String> topicNames = new ArrayList<>();

for(Topic t : threadServerTopicList)
    topicNames.add(t.getTitle());

这样的事情。给我们主题列表类代码。

答案 1 :(得分:0)

它可以共享列表,它将反映任何更改,无论更改哪个线程,但SortedTopicList根本不是线程安全的,它必须是。不是线程安全的问题不是其他线程看到或不看到更改,而是线程可能在同时编辑列表时损坏结构,或者线程可能遍历正在编辑的列表并可能结束在一个无限循环或其他东西。

您必须设置互斥区域(互斥,同步关键字),以便多个线程不会同时访问列表或忘记使用手工制作的数据结构并使用支持并发操作的数据结构。 This package可能会对您有所帮助。