电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

淺談JavaIO之try with底層原理

瀏覽:2日期:2022-08-11 13:28:29
目錄IO關(guān)閉的問題使用try with resourcetry with resource的原理自定義resourceIO關(guān)閉的問題

最近寫了一個(gè)例子,讀取一個(gè)文件沒有問題,但是讀取很多個(gè)文件就會告訴我:”Can’t open so many files“,能幫我看看是什么問題嗎?可能打開文件太多了吧,用兩個(gè)命令,查看最大文件打開限制。

一個(gè)命令是

ulimit -a

淺談JavaIO之try with底層原理

第二個(gè)命令是

ulimit -n

256

看起來是最大文件限制太小了,只有256個(gè),調(diào)大一點(diǎn)就可以了。

讀文件都是一個(gè)一個(gè)讀的,沒有同時(shí)開這么多文件

好吧,看下寫的代碼吧:

BufferedReader bufferedReader = null;try { String line; bufferedReader = new BufferedReader(new FileReader('trywith/src/main/resources/www.flydean.com')); while ((line = bufferedReader.readLine()) != null) {log.info(line); }} catch (IOException e) { log.error(e.getMessage(), e);}

看完代碼,問題找到了,IO沒有關(guān)閉,應(yīng)該在使用之后,在finally里面把你的reader關(guān)閉。

下面這段代碼就行了:

BufferedReader bufferedReader = null;try { String line; bufferedReader = new BufferedReader(new FileReader('trywith/src/main/resources/www.flydean.com')); while ((line = bufferedReader.readLine()) != null) {log.info(line); }} catch (IOException e) { log.error(e.getMessage(), e);} finally { try {if (bufferedReader != null){ bufferedReader.close();} } catch (IOException ex) {log.error(ex.getMessage(), ex); }}使用try with resource

現(xiàn)在每段代碼都要手動添加finally,實(shí)在是太麻煩了,很多時(shí)候又怕忘記關(guān)閉IO了,導(dǎo)致程序出現(xiàn)無法預(yù)料的異常。

從JDK7開始,Java引入了try with resource的新功能,把使用過后要關(guān)閉的resource放到try里面,JVM會幫你自動close的,是不是很方便,來看下面這段代碼:

try (BufferedReader br = new BufferedReader(new FileReader('trywith/src/main/resources/www.flydean.com'))){ String sCurrentLine; while ((sCurrentLine = br.readLine()) != null){log.info(sCurrentLine); }} catch (IOException e) { log.error(e.getMessage(), e);}try with resource的原理

什么是resource呀?為什么放到try里面就可以不用自己close了?

resource就是資源,可以打開個(gè)關(guān)閉,我們可以把實(shí)現(xiàn)了java.lang.AutoCloseable接口的類都叫做resource。

先看下AutoCloseable的定義:

public interface AutoCloseable {void close() throws Exception;}

AutoCloseable定義了一個(gè)close()方法,當(dāng)我們在try with resource中打開了AutoCloseable的資源,那么當(dāng)try block執(zhí)行結(jié)束的時(shí)候,JVM會自動調(diào)用這個(gè)close()方法來關(guān)閉資源。

我們看下上面的BufferedReader中close方法是怎么實(shí)現(xiàn)的:

public void close() throws IOException { synchronized (lock) {if (in == null) return;in.close();in = null;cb = null; }}自定義resource

那么我們是不是可以實(shí)現(xiàn)AutoCloseable來創(chuàng)建自己的resource呢?

我們定義這樣一個(gè)resource類:

public class CustResource implements AutoCloseable { public void helpSister(){log.info('解決問題!'); } @Override public void close() throws Exception {log.info('解決完問題,趕緊去吃飯!'); } public static void main(String[] args) throws Exception { try( CustResource custResource= new CustResource()){ custResource.helpSister(); } }}

運(yùn)行輸出結(jié)果

[main] INFO com.flydean.CustResource - 解決問題!

[main] INFO com.flydean.CustResource - 解決完問題,趕緊去吃飯!

以上就是淺談JavaIO之try with底層原理的詳細(xì)內(nèi)容,更多關(guān)于JavaIO之try with底層原理的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 橡胶接头_橡胶软接头_可曲挠橡胶接头-巩义市创伟机械制造有限公司 | 氧化铝球_高铝球_氧化铝研磨球-淄博誉洁陶瓷新材料有限公司 | 工业洗衣机_工业洗涤设备_上海力净工业洗衣机厂家-洗涤设备首页 bkzzy在职研究生网 - 在职研究生招生信息咨询平台 | 达利园物流科技集团-| 公交驾校-北京公交驾校欢迎您! 工作心得_读书心得_学习心得_找心得体会范文就上学道文库 | 焊锡丝|焊锡条|无铅锡条|无铅锡丝|无铅焊锡线|低温锡膏-深圳市川崎锡业科技有限公司 | 钢绞线万能材料试验机-全自动恒应力两用机-混凝土恒应力压力试验机-北京科达京威科技发展有限公司 | 齿轮减速电机一体机_蜗轮蜗杆减速马达-德国BOSERL齿轮减速机带电机生产厂家 | 学生作文网_中小学生作文大全与写作指导 | 软文发布-新闻发布推广平台-代写文章-网络广告营销-自助发稿公司媒介星 | 蓝鹏测控平台 - 智慧车间系统 - 车间生产数据采集与分析系统 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 | 玻璃钢罐_玻璃钢储罐_盐酸罐厂家-河北华盛节能设备有限公司 | 彭世修脚_修脚加盟_彭世修脚加盟_彭世足疗加盟_足疗加盟连锁_彭世修脚技术培训_彭世足疗 | 南京种植牙医院【官方挂号】_南京治疗种植牙医院那个好_南京看种植牙哪里好_南京茀莱堡口腔医院 尼龙PA610树脂,尼龙PA612树脂,尼龙PA1010树脂,透明尼龙-谷骐科技【官网】 | 日本东丽膜_反渗透膜_RO膜价格_超滤膜_纳滤膜-北京东丽阳光官网 日本细胞免疫疗法_肿瘤免疫治疗_NK细胞疗法 - 免疫密码 | 无线联网门锁|校园联网门锁|学校智能门锁|公租房智能门锁|保障房管理系统-KEENZY中科易安 | 聚丙烯酰胺PAM-聚合氯化铝PAC-絮凝剂-河南博旭环保科技有限公司 巨野电机维修-水泵维修-巨野县飞宇机电维修有限公司 | 「阿尔法设计官网」工业设计_产品设计_产品外观设计 深圳工业设计公司 | 沉降天平_沉降粒度仪_液体比重仪-上海方瑞仪器有限公司 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 喷砂机厂家_自动除锈抛丸机价格-成都泰盛吉自动化喷砂设备 | 珠海白蚁防治_珠海灭鼠_珠海杀虫灭鼠_珠海灭蟑螂_珠海酒店消杀_珠海工厂杀虫灭鼠_立净虫控防治服务有限公司 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 车充外壳,车载充电器外壳,车载点烟器外壳,点烟器连接头,旅行充充电器外壳,手机充电器外壳,深圳市华科达塑胶五金有限公司 | 胜为光纤光缆_光纤跳线_单模尾纤_光纤收发器_ODF光纤配线架厂家直销_北京睿创胜为科技有限公司 - 北京睿创胜为科技有限公司 | 阳光模拟试验箱_高低温试验箱_高低温冲击试验箱_快速温变试验箱|东莞市赛思检测设备有限公司 | 超声波清洗机_细胞破碎仪_实验室超声仪器_恒温水浴-广东洁盟深那仪器 | 闪电优家-卫生间防水补漏_酒店漏水渗水维修_防水堵漏公司 | 螺旋叶片_螺旋叶片成型机_绞龙叶片_莱州源泽机械制造有限公司 | 分光色差仪,测色仪,反透射灯箱,爱色丽分光光度仪,美能达色差仪维修_苏州欣美和仪器有限公司 | 大型多片锯,圆木多片锯,方木多片锯,板材多片锯-祥富机械有限公司 | 北京模型公司-工业模型-地产模型-施工模型-北京渝峰时代沙盘模型制作公司 | 武汉森源蓝天环境科技工程有限公司-为环境污染治理提供协同解决方案 | 液压升降平台_剪叉式液压/导轨式升降机_传菜机定做「宁波日腾升降机厂家」 | 尼龙PA610树脂,尼龙PA612树脂,尼龙PA1010树脂,透明尼龙-谷骐科技【官网】 | 防爆大气采样器-防爆粉尘采样器-金属粉尘及其化合物采样器-首页|盐城银河科技有限公司 | 浙江美尔凯特智能厨卫股份有限公司| 卫生人才网-中国专业的医疗卫生医学人才网招聘网站! | 武汉森源蓝天环境科技工程有限公司-为环境污染治理提供协同解决方案 | 煤粉取样器-射油器-便携式等速飞灰取样器-连灵动 |