将PrintWriters放置在Java List或Collection中可以吗?

时间:2019-06-22 12:58:02

标签: java arraylist

我正在尝试使用套接字创建服务器,并且试图找到一种通过使用某种数组/列表/集合向服务器添加多个套接字的方法。

目前我正在尝试使用CopyOnWriteArrayList,但是由于我对List和PrintWriters的工作方式了解不多,我不认为我想使用List。

这在我的主要课堂上是引起我问题的原因:

protected CopyOnWriteArrayList<ClientConnection> clients;

这迫使我必须按以下步骤关闭课程:

@Override
public void close() throws IOException {
    for (int n = 0; n < clients.size(); ++n) {

        // Gets the client
        ClientConnection toClose = clients.get(n);

        // Closes it
        toClose.close();

        // Sets the array to be closed.
        clients.set(n, toClose);
    }
}

这是ClientConnection.java的内容:

public class ClientConnection implements java.io.Closeable {
    public Socket socket;
    public PrintWriter out;
    public InputStreamReader in;

    public ClientConnection (Socket socket) throws IOException {
        this.socket = socket;

        out = new PrintWriter(socket.getOutputStream(), true);
        in = new InputStreamReader(socket.getInputStream());
    }

    @Override
    public void close () throws IOException {
        out.close();
        in.close();
        socket.close();
    }
}

我想知道的是,是否由于使用列表进行克隆而导致的错误做法,是将列表与PrintWriters和其他java.io类一起使用吗?如果是这样,什么是好的选择?

1 个答案:

答案 0 :(得分:1)

您的代码完全可以,您可以将列表与PrintWriters和java.io一起使用