日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

讓Java程序只運(yùn)行一個(gè)實(shí)例

瀏覽:152日期:2024-07-02 15:43:21
內(nèi)容: 一個(gè)程序可以在內(nèi)存里面存在多個(gè)運(yùn)行實(shí)例,比如,你可以打開(kāi)多個(gè)微軟的Word程序。但是,有些時(shí)候我們需要控制程序運(yùn)行的實(shí)例只有一個(gè),也就是說(shuō),該程序同一時(shí)刻在內(nèi)存里面運(yùn)行的只有一個(gè)實(shí)例。這樣當(dāng)這個(gè)程序在內(nèi)存中已經(jīng)存在一個(gè)運(yùn)行實(shí)例而用戶又再次運(yùn)行了該程序的時(shí)候,有兩種結(jié)果,第一種結(jié)果是結(jié)束目前的運(yùn)行實(shí)例,打開(kāi)新運(yùn)行的實(shí)例;第二種就是讓新運(yùn)行的實(shí)例退出,原有的運(yùn)行實(shí)例繼續(xù)運(yùn)行。 原理 因?yàn)槿魏螘r(shí)候只有一個(gè)實(shí)例,所以在實(shí)現(xiàn)這種功能的時(shí)候必須借助只能被獨(dú)享的資源。如果我們的程序是基于某個(gè)平臺(tái)的,那么就可以借助操作系統(tǒng)的內(nèi)核對(duì)象來(lái)完成,比如Windows操作系統(tǒng)就提供了CreateMutex這個(gè)API來(lái)創(chuàng)建一個(gè)獨(dú)享的內(nèi)核對(duì)象。但是因?yàn)橐紤]平臺(tái)無(wú)關(guān),Java程序的實(shí)例控制不應(yīng)該使用系統(tǒng)的內(nèi)核對(duì)象來(lái)完成,那么我們就必須找到其它的、可以獨(dú)享的資源。實(shí)際上,一臺(tái)機(jī)器無(wú)論是在什么操作系統(tǒng)上,網(wǎng)絡(luò)端口都是獨(dú)享的,也就是說(shuō)基于網(wǎng)絡(luò)端口這個(gè)獨(dú)享的原理,我們可以很方便地讓我們的Java程序?qū)崿F(xiàn)在內(nèi)存里面只有一個(gè)運(yùn)行實(shí)例這個(gè)功能,而且這個(gè)功能的實(shí)現(xiàn)是與平臺(tái)無(wú)關(guān)的。 實(shí)現(xiàn) 我們先來(lái)看看第一種情況是如何實(shí)現(xiàn)的,也就是說(shuō)如果系統(tǒng)中已經(jīng)存在運(yùn)行實(shí)例的話,那么結(jié)束原有的運(yùn)行實(shí)例,讓新實(shí)例運(yùn)行。這個(gè)實(shí)現(xiàn)實(shí)例控制的Java類也是一個(gè)線程,具體的實(shí)現(xiàn)如下: import java.net.*;public class InstanceControl extends Thread { public void run() { try{ Socket sock = new Socket('127.0.0.1',22222); //創(chuàng)建socket,連接22222端口  } catch (Exception e) {} try{ ServerSocket server = new ServerSocket(22222);//創(chuàng)建socket,在22222端口監(jiān)聽(tīng) server.accept(); //等待連接 server.close(); //有連接到來(lái),也就是說(shuō)有新的實(shí)例 System.exit(0); //這個(gè)實(shí)例退出 }catch (Exception e) { e.printStackTrace(); } }} 下面這個(gè)Java程序的程序入口是沒(méi)有實(shí)例控制功能的: public class ProgramMain { public static void main(String argv[]) { mainFrame frame = new mainFrame(); }} 現(xiàn)在想加入實(shí)例控制,只需要添加兩行代碼,添加后代碼如下所示: public class ProgramMain { public static void main(String argv[]) { InstanceControl ic = new InstanceControl(); ic.start(); mainFrame frame = new mainFrame(); }} 在這個(gè)基礎(chǔ)上,要實(shí)現(xiàn)第二種情況,也就是已經(jīng)有實(shí)例運(yùn)行的情況下,新的實(shí)例退出,保持原有的運(yùn)行實(shí)例,就只需要一點(diǎn)小的改動(dòng)了。具體的實(shí)現(xiàn)如下: import java.net.*;public class InstanceControl2 extends Thread { public void run() { try{ Socket sock = new Socket('127.0.0.1', 22222);//創(chuàng)建socket,連接22222端口 System.exit(0); //連接成功,說(shuō)明有實(shí)例存在,則退出 }catch (Exception e) {} try{ ServerSocket server = new ServerSocket(22222);//創(chuàng)建socket,連接22222端口 while (true) { server.accept(); //接受連接請(qǐng)求 } }catch (Exception e) { e.printStackTrace(); } }} 這個(gè)類的使用方法和第一種情況的那個(gè)類是一樣的,只需要在原有的代碼上加入兩行代碼即可: InstanceControl2 ic = new InstanceControl();ic.start(); 擴(kuò)展上面的程序也許有一個(gè)小bug,就是如果程序在開(kāi)始運(yùn)行時(shí)ServerSocket監(jiān)聽(tīng)的端口已經(jīng)被其它程序占用,那么程序的運(yùn)行就會(huì)受到影響。所以程序的端口應(yīng)該盡量取得大一些,在這種情況下其它程序占用這個(gè)程序使用的端口的概率是可以忽略不計(jì)的。同時(shí),還可以做兩種擴(kuò)展,第一種是把端口寫(xiě)在配置文件中,可通過(guò)讀配置文件得到端口,這樣就能夠在其它程序占用目前端口的情況下改變這個(gè)程序使用的端口。還有一種是在運(yùn)行的時(shí)候用兩個(gè)InstanceControl類分別在兩個(gè)端口監(jiān)聽(tīng),只要有一個(gè)InstanceControl類得到連接就做出響應(yīng),這樣兩個(gè)端口都被其它程序占用的概率就更加的微乎其微了。 轉(zhuǎn)自: 賽迪網(wǎng) Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美一区自拍| 97人人精品| 亚洲高清激情| 欧美一级二区| 日韩高清不卡一区二区| 日本中文字幕视频一区| 久久国产精品毛片| 亚洲一区二区三区免费在线观看| 亚洲www啪成人一区二区| 麻豆视频在线观看免费网站黄| 精品免费av| 久久国产人妖系列| 欧美精品影院| 在线精品国产亚洲| 日本va欧美va精品发布| 蜜桃视频一区二区三区| 日本不卡一区二区| 国产精品久av福利在线观看| 国产欧美一级| 六月天综合网| 国产精品一国产精品| 国产福利91精品一区二区| 国产精品流白浆在线观看| 国产精品天堂蜜av在线播放| 日韩精品五月天| 91嫩草精品| 首页欧美精品中文字幕| 91精品在线免费视频| 蜜臀精品一区二区三区在线观看 | 午夜欧美理论片| 美女精品网站| 国产精品第十页| 国产欧美一区二区色老头| 麻豆视频一区| 国产中文欧美日韩在线| 国产劲爆久久| 成人国产精品一区二区免费麻豆| 日韩欧美三级| 久久久精品久久久久久96| 一区二区国产精品| 欧美手机在线| 午夜日本精品| 久久狠狠久久| 亚洲91视频| 日本午夜精品视频在线观看| 国产精品一区三区在线观看| 亚洲欧洲高清| 午夜久久影院| 日韩精品导航| 国产亚洲观看| 亚洲激情五月| 亚洲精品亚洲人成在线观看| 久久久久国产精品一区三寸| 久久久久亚洲精品中文字幕| 免费视频一区二区三区在线观看 | 香蕉成人av| 日韩在线观看一区二区| 国产精品调教| 亚洲激情久久| 久久精品五月| 男人天堂欧美日韩| 九九久久国产| 丝袜国产日韩另类美女| 精品美女视频 | 亚洲tv在线| 国产美女高潮在线观看| 午夜性色一区二区三区免费视频| 日韩欧美中文字幕一区二区三区 | 欧美黄页在线免费观看| 99亚洲视频| 国产一区二区三区四区| 亚洲精品第一| 欧美午夜精品一区二区三区电影| 欧美日韩a区| 激情偷拍久久| 国产情侣久久| 男女男精品视频网| 久久久一二三| 精品日韩在线| 欧美一级网站| 男女精品网站| 亚洲无线一线二线三线区别av| 国产日韩欧美中文在线| 国产女优一区| 99久久夜色精品国产亚洲狼| 久久精品国产福利| 97精品久久| 中文字幕亚洲精品乱码| 五月天激情综合网| 色婷婷色综合| 国产欧美啪啪| 视频一区二区三区入口| 91精品久久久久久久久久不卡| 久久丁香四色| 青青青国产精品| 男女激情视频一区| 亚洲欧洲一区| 欧洲亚洲一区二区三区| 久久久久久夜| 精品少妇一区| 免费亚洲一区| 国产精品一区二区美女视频免费看 | 99视频精品视频高清免费| 最近高清中文在线字幕在线观看1| 亚洲精品激情| 免费视频久久| 日韩国产一二三区| 播放一区二区| 天堂√中文最新版在线| 中文字幕一区二区精品区| 丝袜美腿亚洲色图| 久久精品亚洲人成影院 | 视频在线观看91| 欧美日韩一区二区三区不卡视频| 不卡中文字幕| 麻豆中文一区二区| 亚洲资源av| 国产精品蜜芽在线观看| 国产视频一区三区| 日韩精品中文字幕吗一区二区| 亚洲综合电影一区二区三区| 亚洲精品动态| 国产一区不卡| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 里番精品3d一二三区| 日韩黄色免费网站| 国产视频亚洲| 亚洲精品1区| 极品日韩av| 91九色精品| 欧美日韩少妇| 玖玖精品视频| 亚洲一二av| 亚洲一区二区三区四区五区午夜 | 国产亚洲精品v| 日韩av一区二区三区| 国产欧美在线| 蜜臀久久精品| 精品网站999| 中文字幕免费一区二区| 国产精品最新| 欧美成人基地 | 国产精品magnet| 国产精品一二| 美女视频黄久久| 国产成人精品亚洲线观看| 日韩不卡一区| 91精品精品| 久久国产福利| 日韩欧美中文在线观看| 亚洲精品人人| 久久精品超碰| 国产精品密蕾丝视频下载| 精品三区视频| 最新亚洲激情| 日韩一二三区在线观看| 久久一区国产| 日本久久成人网| 亚洲视频播放| 欧美在线91| 日韩av有码| 尤物在线精品| 中文字幕一区二区三区日韩精品 | 欧美一区网站| 麻豆精品一区二区综合av| 日韩一区亚洲二区| 亚洲深夜影院| 久久狠狠亚洲综合| 国产不卡人人| 国产亚洲精品久久久久婷婷瑜伽| 日韩三级视频| 色一区二区三区四区| 亚洲少妇自拍| 国产毛片精品| 亚洲v在线看| 日韩在线视频一区二区三区| 国产一区二区三区不卡视频网站| 欧美日韩视频一区二区三区| 欧美永久精品| 91亚洲国产| 蜜臀av国产精品久久久久| 久久99蜜桃| 99热精品在线| 国产精品magnet| 好吊一区二区三区| 欧美经典一区| 欧美特黄一区| 精品国产鲁一鲁****| 亚洲综合精品四区| 精品一区91| 亚洲欧美日韩国产一区| 久久尤物视频| 99热精品在线| 成人高清一区| 久久亚洲风情| 色在线中文字幕| 日本视频一区二区| 免费精品国产的网站免费观看| 国产欧美一区二区精品久久久 | 综合五月婷婷|