首页 文章

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

提问于
浏览
-1

我有一个简单的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 回答

  • 1

    这是因为您正在使用实例范围 . 使用类范围的范围,事情应该工作 . 只需将关键工作 static 添加到数据库声明:

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

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

相关问题