public class StoreMessage extends Thread implements Serializable{
private static long startNanotime=System.nanoTime();
private static int timeToRun = 60000; // 1 minute
private static long startTime = System.currentTimeMillis();
private static long runUntilMillis = System.currentTimeMillis() + timeToRun;
public static Map <Long,Message> map1=Collections.synchronizedMap(new TreeMap<Long,Message>());
public static void store(Message message)throws Exception{
while (true) {
long now = System.currentTimeMillis();
if (now >= runUntilMillis) {
break;
}
long preciseTime=TimeUnit.MILLISECONDS.toNanos(now)+(System.nanoTime()-startNanotime);
map1.put(preciseTime, message);
}
}
public static byte[] returning()throws Exception
{
map1.clear();
return Serializer.serialize(map1);
}
}
このコードは、複数のコマンド ライン引数をツリー マップに格納し、シリアル化します。受信したすべての引数を 1 分間に格納するように変更するにはどうすればよいですか?一度に複数の引数を指定するか、数秒の間隔を空けて 1 つずつ指定しますか?1 分が経過すると、ツリー マップはクリアしてシリアライズ。そしてクリアすると、次の分からデータの受信を開始します。例えば。ユーザーが午後 9 時 19 分にデータの入力を開始し、同時に複数のメッセージを入力したとします。彼は、たとえば 9.19.38 秒でさらに入力します。次に、彼が午後 9 時 20 分にさらにデータを入力し、その後停止したとします。私のコードは、午後 9 時 19 分に複数のメッセージを入力し、それをツリー マップに保存し、1 分後にシリアル化し、9 時 19 分 38 秒にデータを入力することを許可しませんが、データを入力することはできます。クリアマップの19.20に。私が検討していたのは、午後 9 時 19 分に受信したすべてのデータを保存し、午後 19 時 19 分 38 秒にユーザーがさらにメッセージを入力したため、19 時 20 分まで待ち、それらを同じマップに書き込み、19 時 20 分にシリアル化してクリアすることでした。 19.20 にメッセージの保存を開始できます。どのような変更を加えますか? 私を助けてください!