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);
}
}
此代码使用 in 将多个命令行参数存储到树形图并对其进行序列化。我如何修改它,使其在一分钟内存储收到的所有参数。无论是一次多个参数还是一个间隔几秒的参数?一旦一分钟结束,树形图是被清除和序列化。一旦清除,从下一分钟开始接收数据。例如。假设我的用户在晚上 9.19 开始输入他的数据,他同时输入了多条消息。他在 9.19.38 秒时输入了更多信息。然后假设他在晚上 9.20 输入了更多数据,然后停止。我的代码所做的是,它让他在晚上 9.19 输入多条消息,将其存储到树形图中,然后在一分钟后对其进行序列化,并且不允许他在 9.19.38 秒输入数据,但他能够输入数据19.20 在已清除的地图上。我正在做的是,存储他在晚上 9.19 收到的所有数据,等到 19.20..由于用户在 19.19.38 pm 输入更多消息,将它们写入同一个地图,然后在 19.20 序列化并清除它,所以我可以在 19.20 开始存储消息。我要做什么改变...?请帮我!