第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

我可以相信 System.nanoTime() 每次調(diào)用都會(huì)返回不同的值嗎?

我可以相信 System.nanoTime() 每次調(diào)用都會(huì)返回不同的值嗎?

飲歌長(zhǎng)嘯 2023-07-13 17:39:06
我的程序需要生成由標(biāo)簽、日期和時(shí)間組成的唯一標(biāo)簽。像這樣的東西:"myTag__2019_09_05__07_51"如果一個(gè)人試圖在同一分鐘內(nèi)生成兩個(gè)具有相同標(biāo)簽的標(biāo)簽,一個(gè)人將收到相同的標(biāo)簽,這是我不能允許的。我考慮添加作為 System.nanoTime() 的附加后綴結(jié)果,以確保每個(gè)標(biāo)簽都是唯一的(我無(wú)法訪問(wèn)之前生成的所有標(biāo)簽來(lái)查找重復(fù)項(xiàng)):"myTag__2019_09_05__07_51__{System.nanoTime() result}"我可以相信每次調(diào)用 System.nanoTime() 都會(huì)產(chǎn)生不同的值嗎?我在我的筆記本電腦上進(jìn)行了這樣的測(cè)試:assertNotEquals(System.nanoTime(), System.nanoTime())這有效。我想知道我是否能保證它永遠(yuǎn)有效。
查看完整描述

1 回答

?
互換的青春

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

太長(zhǎng)了;如果您僅在現(xiàn)代操作系統(tǒng)上的流行虛擬機(jī)上使用單線程,那么它在實(shí)踐中可能會(huì)起作用。但許多嚴(yán)肅的應(yīng)用程序使用多個(gè)線程和應(yīng)用程序的多個(gè)實(shí)例,在這種情況下不會(huì)有任何保證。

Javadoc中對(duì) System.nanoTime() 給出的唯一保證是時(shí)鐘的分辨率至少與System.currentTimeMillis()- 因此,如果您正在編寫(xiě)跨平臺(tái)代碼,顯然不希望 的結(jié)果nanoTime是唯一的,因?yàn)槊亢撩肟梢哉{(diào)用nanoTime()多次。

在我的操作系統(tǒng)(Java 11、MacOS)上,同一線程上的連續(xù)調(diào)用之間總是至少有一納秒的差異(這是在 Integer.MAX_VALUE 查看連續(xù)返回值之后);實(shí)施中可能有一些東西可以保證這一點(diǎn)。

然而,如果您使用多個(gè)線程并且擁有超過(guò) 1 個(gè)物理 CPU,則很容易生成重復(fù)結(jié)果。下面的代碼將向您展示:

public class UniqueNano {

? ? private static volatile long a = -1, b = -2;


? ? public static void main(String[] args) {

? ? ? ? long max = 1_000_000;

? ? ? ? new Thread(() -> {

? ? ? ? ? ? for (int i = 0; i < max; i++) { a = System.nanoTime(); }

? ? ? ? }).start();

? ? ? ? new Thread(() -> {

? ? ? ? ? ? for (int i = 0; i < max; i++) { b = System.nanoTime(); }

? ? ? ? }).start();

? ? ? ? for (int i = 0; i < max; i++) {

? ? ? ? ? ? if (a == b) {

? ? ? ? ? ? ? ? System.out.println("nanoTime not unique");

? ? ? ? ? ? }

? ? ? ? }

? ? }

}

此外,當(dāng)您將應(yīng)用程序擴(kuò)展到多臺(tái)計(jì)算機(jī)時(shí),您可能會(huì)遇到同樣的問(wèn)題。


依靠System.nanoTime()獲得獨(dú)特的價(jià)值觀并不是一個(gè)好主意。


查看完整回答
反對(duì) 回復(fù) 2023-07-13
  • 1 回答
  • 0 關(guān)注
  • 291 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)