如何让多个客户端访问服务器ArrayList?

时间:2018-01-29 21:53:24

标签: java sockets arraylist

我有一个简单的arraylist并在我的服务器中添加了一些方法来添加打印编辑或从中删除内容,如果我只需要我的服务器并使用我的客户端连接到该端口号就可以正常工作。

但是如果我打开另一个客户端并连接到它,并从我的第一个客户端添加一个元素到arraylist,它就像arraylist在第二个上面仍然是空的。我如何制作它以便这两个都可以访问arraylist?如果我从客户端1向我的arraylist添加一个新项目,那么当我在客户端2中打印arraylist时,我希望能够看到该项目。

一些额外的细节: 我使用Collections.synchronizedList和每个客户端的一个线程,并且从arraylist中添加,打印,删除等东西的方法有" public synchronized void"如果这很重要的话。

ArrayList初始化:

public List<Data> database = Collections.synchronizedList(new ArrayList<Data>());

2 个答案:

答案 0 :(得分:1)

这是因为您正在使用实例范围。使用类范围的范围,事情应该工作。只需将关键工作public static List<Data> database = Collections.synchronizedList(new ArrayList<Data>()); 添加到数据库声明:

Image

答案 1 :(得分:0)

现在看起来每个客户端都有自己的ArrayList实例。您可以通过在应用程序范围内(如静态)来解决此问题,但我猜您希望在程序停止后保存结果。关于这个的简单方法是将结果保存到文件中,所以让我们说“获取”你加载列表,“提交”你加载当前列表并保存更改等等。但是我建议熟悉SQL数据库。