Java的HttpURLConnecction的getInputStream是否需要close?
問題描述
RT,就醬Java的HttpURLConnecction的getInputStream是否需要close?
這個(gè)流是否是系統(tǒng)維護(hù)的?因?yàn)椴皇俏掖蜷_的
問題解答
回答1:養(yǎng)成習(xí)慣所有不再用的InputStream和OutputStream都關(guān)掉就好了,不管API背后的實(shí)現(xiàn)有沒有自動(dòng)幫你關(guān)掉。如果用Java 1.7+寫的話,用try-with-resource處理起來就非常簡(jiǎn)單了:
try (InputStream in = urlConnection.getInputStream()) { ...} // 這里會(huì)自動(dòng)調(diào)用 in.close();
類似場(chǎng)景還有:
JDBC的PreparedStatement、ResultSet等都實(shí)現(xiàn)了AutoCloseable接口,理論上只要Connection被close掉,由它生成的這些PreparedStatement、ResultSet等也會(huì)自動(dòng)close掉,但強(qiáng)烈建議你產(chǎn)生這些資源的時(shí)候用try-with-resource來管理。
ServletRequest/ServletResponse中的getInputStream/getOutputStream等資源也是。
回答2:需要
在并發(fā)操作非常高的情況下, 如果你不關(guān)閉, 對(duì)系統(tǒng)資源的開銷會(huì)比較大.
相關(guān)文章:
1. 人工智能 - python 機(jī)器學(xué)習(xí) 醫(yī)療數(shù)據(jù) 怎么學(xué)2. python - oslo_config3. mysql優(yōu)化 - mysql 一張表如果不能確保字段列長(zhǎng)度一致,是不是就不需要用到char。4. python - 請(qǐng)問這兩個(gè)地方是為什么呢?5. Python處理Dict生成json6. 請(qǐng)教一個(gè)mysql去重取最新記錄7. javascript - 按鈕鏈接到另一個(gè)網(wǎng)址 怎么通過百度統(tǒng)計(jì)計(jì)算按鈕的點(diǎn)擊數(shù)量8. python2.7 - python 正則前瞻 后瞻 無法匹配到正確的內(nèi)容9. 大家都用什么工具管理mysql數(shù)據(jù)庫(kù)?10. php - 有關(guān)sql語(yǔ)句反向LIKE的處理
