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을 사용하여 트리 맵에 저장하고이를 직렬화합니다. 어떻게하면 모든 인수가 1 분 안에 저장되는 방식으로 수정합니까? 한 번에 여러 인수 나 몇 초 간격으로 하나씩? 한 번만 끝나면 트리 맵은 다음과 같습니다. 삭제 및 직렬화 할 수 있습니다. 한 번 삭제되면 다음 순간부터 데이터를 수신하기 시작합니다. 예 : 내 사용자가 오후 9시 19 분에 자신의 데이터를 입력하기 시작하면 동시에 여러 메시지를 입력합니다. 그는 9.19.38 초에 대해 더 많은 것을 입력합니다. 그런 다음 9.20 pm에 더 많은 데이터를 입력 한 다음 중지합니다. 내 코드는 9.19pm에 여러 개의 메시지를 입력하고 트리 맵에 저장 한 다음 1 분 후에 직렬화하고 9.19.38 초에 데이터를 입력 할 수 없지만 데이터를 입력 할 수 있습니다. 해제 된지도에서 19.20에 내가 한 일은 9.19pm에 수신 된 모든 데이터를 저장하고, 19.20까지 기다렸습니다. 사용자가 19.19.38pm에 더 많은 메시지를 입력하고 같은 맵에 쓰고 19.20에서 직렬화하고 지우면됩니다. 그래서 나는 19.20에 메시지를 저장하기 시작할 수있다. 나는 어떤 변화를 ...? 제발 도와주세요!일련 번호를 입력하기 전에 1 분 동안 트리 맵에 데이터를 저장하기 전에
트리 맵을 사용하여 동일한 결과를 얻을 수있는 방법이 있습니까? 나는 그것에 링크 된 다른 프로그램 코드에서 참조 용 키가 필요하다. – kuks
자, 키를 제거 할 필요는 없습니다. 직렬화를 관리하는 대기열에서 키를 제거/할인해야합니다. 당신이 나보다 더 많은 장소에서 너무 단단히 결합 된 것 같은데. 복잡성을 관리하는 가장 좋은 방법은 간단한 작업으로 유지하는 것입니다. –
난 너를 따라 다니지 않아. 나는 연재 될 열쇠가 필요해. 똑같은 예를 들어 줄래? – kuks