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

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

Java如何讓程序只運(yùn)行一次?

Java如何讓程序只運(yùn)行一次?

猛跑小豬 2019-03-14 10:15:12
public static void main(String[] args) {    if(程序未運(yùn)行) {        // 運(yùn)行程序        while(true) {            Thread.sleep(1000);        }    } else {        System.out.println("程序已經(jīng)正在運(yùn)行,該進(jìn)程退出");    }}目前使用的解決方案基本是占用操作系統(tǒng)的某項(xiàng)資源來達(dá)到目的,比如占用端口號(hào)、文件。有沒有更優(yōu)雅的方式?
查看完整描述

3 回答

?
HUH函數(shù)

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

你的應(yīng)該是一臺(tái)機(jī)器上只啟動(dòng)一個(gè)實(shí)例吧,有本地的方案也有分布式的方案。
本地的方案一般是通過占用一個(gè)固定端口、文件鎖來完成,這也是所有程序的通用做法。

如果是分布式環(huán)境,這個(gè)事情就演化為master的選舉,此時(shí)是通過zookeeper等類似的中間協(xié)調(diào)人來完成。


查看完整回答
反對(duì) 回復(fù) 2019-04-16
?
明月笑刀無情

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

也就是說你可能會(huì)執(zhí)行多次這個(gè)程序 但是你希望里面的操作能夠只運(yùn)行一次是吧。
由于你是每次run的,也就是說每次會(huì)啟動(dòng)一個(gè)JVM,那么就需要外部標(biāo)識(shí)來判斷是否已運(yùn)行過了,最簡(jiǎn)單的方式就是寫一個(gè)文件,每次運(yùn)行的時(shí)候讀取這個(gè)文件,存在則說明已經(jīng)運(yùn)行過了。
其實(shí)很多分布式的程序基本都是使用這種方式,像hadoop好像就是,啟動(dòng)的時(shí)候會(huì)保存一個(gè)文件,里面存儲(chǔ)了pid信息,重復(fù)啟動(dòng)就會(huì)保存。

查看完整回答
反對(duì) 回復(fù) 2019-04-16
?
智慧大石

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

你想要的是"不同時(shí)運(yùn)行"嗎? linux常見的做法是/tmp放個(gè)文件鎖


查看完整回答
反對(duì) 回復(fù) 2019-04-16
  • 3 回答
  • 0 關(guān)注
  • 1366 瀏覽
慕課專欄
更多

添加回答

舉報(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)