假设你正在做一些日志文件的后分析?你有没有考虑过他们写的订单,以后再离线重新订购。您可以在提交时使用时间戳或AtomicLong分配唯一的ID吗?
代码草图(未经测试)是这样的:
import java.util.concurrent.atomic.AtomicLong;
class MyProcessor {
public void work()
for (Object data: allData) {
executor.submit(new MySequencedRunnable(data);
}
}
}
class MySequencedRunnable implements Runnable {
private static final AtomicLong LOG_SEQUENCE_ID = new AtomicLong(0);
private final Object data;
MySequencedRunnable(Object data) {
this.data = data;
}
public void run() {
LOGGER.log(LOG_SEQUENCE_ID.incrementAndGet(), data);
}
}
也可以考虑,如果你正在使用类似的log4j,使用NDC或MDC,以协助重新排序。