new Thread(new Runnable() {
@Override
public void run() {
List<Socket> socketList = new ArrayList<>();
for (String ip: iplist) {
Socket socket = null;
try {
socket = new Socket(ip,23);
} catch (IOException e) {
e.printStackTrace();
}
socketList.add(socket);
}
}
}).start();
iplistの各IP用に新しいソケットを作成し、そのソケットをsockets
のリストに追加しようとしています。私はこれのforループを使用しています。 try ... catch
を使用すると、ソケット接続が失敗したときに、ループ実行が長時間停止します。ソケットの接続が失敗したことを知り、ソケットのリストにnullソケットを追加することでループの実行を継続させるためには、より良い選択肢が必要です。`try ... catch`メソッドを使わずに一定時間後にforループを続けるには?
スレッドを考える上で+1。私はそこにjavaのための任意のクラス/メソッドがあると思っていた。そして、一度に多くのスレッドがある場合はどうなるのでしょうか? JVMは大量のメモリを管理する必要があります。 – Mukit09
@ Mukit09スレッドを使用するのにメモリオーバーヘッドがあることは事実です。しかし、何かを得るために何かを与える必要があります。この場合、実行時間は短くなります。メモリ使用量が膨大かどうかはスレッドの数に依存します。私は、OPが100のソケットを生かし続けるつもりはないと願っています。その場合、それはうまくいくはずです。このクラスについては、あなたが意味することを100%確信しているわけではありませんが、関連するいくつかの関連する例など、並行性APIには多くの有用なクラスがあります。 – janos