我正在尋找跨多個線程使用(種子)Random
對象,javadocs指出我ThreadLocalRandom
看起來不錯,除了我不能設置種子,所以我不能確保不同線程或運行之間的一致性。有沒有辦法使用ThreadLocalRandom
任何實際的原因還是會接受做一些這樣的:我應該比ThreadLocal更喜歡ThreadLocalRandom <Random>?
// Pass returned ThreadLocal object to all threads which need it
public static ThreadLocal<Random> threadRandom(final long seed) {
return new ThreadLocal<Random>(){
@Override
protected Random initialValue() {
return new Random(seed);
}
};
}
你想在不同的線程中共享一個Random實例嗎?或者確保每個線程都有自己的Random實例? –
根據「隨機」共享的文檔,線程之間的一個「隨機」對象是一個糟糕的主意。我只是想控制使用的隨機對象的種子,因此行爲是一致的和可重複的。 – dimo414
你可以用反射注入一個種子(初始化爲false,setSeed並將初始化設置爲true)。 – assylias