Cześć.
Jestem dosyć pokorna wobec Javy wielowątkowej. Zwracam się do was z zapytaniem czy taka implementacja jak poniżej do mierzenia
lifetime'u (czasu ile dany wątek już żyje) jest okey?
Dodam, że metody będą używane przez kilka wątków jednocześnie.
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.time.StopWatch;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
@Slf4j
public final class ThreadLifeTimeCounter {
private static final ConcurrentMap<Thread, StopWatch> THREAD_TO_STOPWATCH =
new ConcurrentHashMap<>();
public static void startFor(Thread thread) {
THREAD_TO_STOPWATCH.put(thread, StopWatch.createStarted());
}
public static long getInMsAndFinish(Thread thread) {
return Optional.ofNullable(THREAD_TO_STOPWATCH.remove(thread))
.map(stopWatch -> {
stopWatch.stop();
return stopWatch.getTime();
})
.orElseThrow(() -> new IllegalArgumentException("Thread not started counting life time"));
}
}