欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java.net.URL超時(shí)時(shí)間默認(rèn)無限制問題小結(jié)

 更新時(shí)間:2025年02月28日 10:05:47   作者:曲奇hmb  
文章介紹了如何在Java中使用URLConnection或HttpURLConnection設(shè)置連接和讀取超時(shí),以處理網(wǎng)絡(luò)問題導(dǎo)致的長時(shí)間等待,通過httpstat.us網(wǎng)站可以測試不同延遲的請(qǐng)求,并演示了如何通過調(diào)整超時(shí)時(shí)間處理超時(shí)異常,感興趣的朋友一起看看吧

Java中開發(fā)網(wǎng)絡(luò)應(yīng)用時(shí),通常使用URLConnection或HttpURLConnection。文章介紹了如何通過setConnectTimeout和setReadTimeout設(shè)置連接和讀取超時(shí),以避免因網(wǎng)絡(luò)問題導(dǎo)致的長時(shí)間等待。默認(rèn)情況下,Java的超時(shí)時(shí)間是無限的。通過httpstat.us網(wǎng)站可以測試不同延遲的請(qǐng)求,演示了如何通過調(diào)整超時(shí)時(shí)間處理超時(shí)異常。

Java中可以通過URLConnection類或者HttpURLConnection類來開發(fā)網(wǎng)絡(luò)應(yīng)用,它們內(nèi)部又是通過java.net.URL類來實(shí)現(xiàn)的。可以通過URLConnection.setConnectTimeout()方法和URLConnection.setReadTimeout()方法來設(shè)置URLConnection連接和讀取的超時(shí)時(shí)間。

URL url = new URL("Example Domain");
URLConnection connection = url.openConnection();
connection.setConnectTimeout(5000); //連接超時(shí)時(shí)間5秒
connection.setReadTimeout(10000); //讀取數(shù)據(jù)的超時(shí)時(shí)間10秒

其中setConnectTimeout()設(shè)置連接超時(shí)時(shí)間,單位毫秒

setReadTimeout()設(shè)置讀取數(shù)據(jù)的超時(shí)時(shí)間,單位毫秒

這兩個(gè)方法都是可選的,如果不設(shè)置超時(shí)時(shí)間,就會(huì)使用系統(tǒng)默認(rèn)的超時(shí)時(shí)間。  Java默認(rèn)的超時(shí)時(shí)間是無限大,也就是不限制超時(shí)時(shí)間。所以在開發(fā)中,應(yīng)該根據(jù)實(shí)際情況設(shè)置合理的超時(shí)時(shí)間,避免因網(wǎng)絡(luò)故障等原因?qū)е鲁绦蜷L時(shí)間等待而出現(xiàn)問題。

例如:直接使用new Url().openStream()就會(huì)導(dǎo)致超時(shí)無限制問題

源碼:

 測試超時(shí)時(shí)間:

可以使用 httpstat.us 這個(gè)網(wǎng)站來測試URL請(qǐng)求的超時(shí)時(shí)間。

該網(wǎng)站提供了一些測試URL,可以模擬不同延遲的網(wǎng)絡(luò)請(qǐng)求。

例如,可以使用URL http://httpstat.us/200?sleep=5000 來模擬延遲5秒的請(qǐng)求,其中的sleep參數(shù)表示需要睡眠的毫秒數(shù)。設(shè)置連接超時(shí)和讀取超時(shí)時(shí)間為4秒,代碼如下所示:

import java.net.*;
public class TimeoutTest {
    public static void main(String[] args) {
        try {
            URL url = new URL("http://httpstat.us/200?sleep=5000");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setConnectTimeout(4000); //連接超時(shí)時(shí)間4秒
            conn.setReadTimeout(4000); //讀取數(shù)據(jù)的超時(shí)時(shí)間4秒
            conn.setRequestMethod("GET");
            conn.connect();
            int statusCode = conn.getResponseCode();
            System.out.println("statusCode=" + statusCode);
        } catch (Exception e) {
            System.out.println("timeout error: " + e.getMessage());
        }
    }
}

運(yùn)行該代碼,將會(huì)在4秒后輸出"timeout error: connect timed out",表明連接超時(shí)了。將連接超時(shí)和讀取超時(shí)時(shí)間改成6秒,則可以收到"statusCode=200"的響應(yīng),表明請(qǐng)求成功。

相關(guān)文章

  • Mybatis實(shí)戰(zhàn)之TypeHandler高級(jí)進(jìn)階

    Mybatis實(shí)戰(zhàn)之TypeHandler高級(jí)進(jìn)階

    本文主要介紹了自定義的枚舉TypeHandler的相關(guān)知識(shí),具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • Maven 命令行打包 和 pom.xml的常用配置詳解

    Maven 命令行打包 和 pom.xml的常用配置詳解

    這篇文章主要介紹了Maven 命令行打包 和 pom.xml的常用配置詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Mybatis的核心架構(gòu)及源碼解讀

    Mybatis的核心架構(gòu)及源碼解讀

    這篇文章主要介紹了Mybatis的核心架構(gòu)及源碼解讀,mybatis是一款半自動(dòng)化的持久層框架,它封裝了JDBC操作,支持定制化SQL,高級(jí)映射,但它的數(shù)據(jù)庫無關(guān)性較低,需要的朋友可以參考下
    2023-08-08
  • java中pdf轉(zhuǎn)圖片的實(shí)現(xiàn)方法

    java中pdf轉(zhuǎn)圖片的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄猨ava中pdf轉(zhuǎn)圖片的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • Mybatis入門指南之實(shí)現(xiàn)對(duì)數(shù)據(jù)庫增刪改查

    Mybatis入門指南之實(shí)現(xiàn)對(duì)數(shù)據(jù)庫增刪改查

    數(shù)據(jù)持久層主要負(fù)責(zé)數(shù)據(jù)的增、刪、改、查等功能,MyBatis 則是一款優(yōu)秀的持久層框架,下面這篇文章主要給大家介紹了關(guān)于Mybatis入門指南之實(shí)現(xiàn)對(duì)數(shù)據(jù)庫增刪改查的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • Java8中CompletableFuture的用法全解

    Java8中CompletableFuture的用法全解

    這篇文章主要給大家介紹了關(guān)于Java8中CompletableFuture用法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-01-01
  • Java中刪除文件或文件夾的幾種方法總結(jié)

    Java中刪除文件或文件夾的幾種方法總結(jié)

    這篇文章主要介紹了Java中刪除文件或文件夾的幾種方法總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Spring集成JPA配置懶加載報(bào)錯(cuò)解決方案

    Spring集成JPA配置懶加載報(bào)錯(cuò)解決方案

    這篇文章主要介紹了Spring集成JPA配置懶加載報(bào)錯(cuò)解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 詳解Java中CAS機(jī)制的原理與優(yōu)缺點(diǎn)

    詳解Java中CAS機(jī)制的原理與優(yōu)缺點(diǎn)

    CAS?英文就是?compare?and?swap?,也就是比較并交換,這篇文章主要來和大家介紹一下Java中CAS機(jī)制的原理與優(yōu)缺點(diǎn),感興趣的小伙伴可以了解一下
    2023-06-06
  • Java布爾值Boolean和boolean之間轉(zhuǎn)換實(shí)例用法

    Java布爾值Boolean和boolean之間轉(zhuǎn)換實(shí)例用法

    在本篇文章里小編給大家整理的是一篇關(guān)于Java布爾值Boolean和boolean之間轉(zhuǎn)換實(shí)例用法內(nèi)容,有需要的朋友們跟著學(xué)習(xí)參考下。
    2021-06-06

最新評(píng)論