500を超えるプレーヤーを同時に接続すると、(マルチスレッド)サーバーでこの奇妙な問題が発生します。PrinterWriterがflush()またはprint()を完了するのに100秒以上(2分)かかることがあります。
コードは次のとおりです。
public static void send(Player p, String packet)
{
PrintWriter out = p.get_out();
if(out != null && !packet.equals("") && !packet.equals(""+(char)0x00))
{
packet = Crypter.toUtf(packet);
out.print((packet)+(char)0x00);
out.flush();
}
}
printWriterは次のようなものです。
_in = new BufferedReader(new InputStreamReader(_socket.getInputStream()));
_out = new PrintWriter(_socket.getOutputStream());
send()メソッドに同期されたキーワードを追加すると、サーバー全体が2秒ごとにラグを開始します。追加しないと、理由もなくランダムなプレーヤーがラグを開始します。
誰かが何か考えを持っていますか?これはどこから来たのですか?私は何をすべきか?