導航:首頁 > 網路安全 > java如何應對網路超時

java如何應對網路超時

發布時間:2022-08-22 11:03:00

A. JAVA被禁止使用網路,MC連接超時

展開全部
關於超時時間:
java.net.HttpURLConnection是基於HTTP協議的,其底層通過socket通信實現.
如果不設置超時(timeout),在網路異常的情況下,可能會導致程序僵而不繼續往下執行.
在JDK1.5-
版本中,只能通過以下兩個語句來設置相應的超時:
System.setProperty("sun.net.client.defaultConnectTimeout",超時毫秒數字元串);
System.setProperty("sun.net.client.defaultReadTimeout",超時毫秒數字元串);
在JDK1.5+,還可以使用HttpURLConnection的父類URLConnection的以下兩個方法:
URLConnection.setConnectTimeout(int):設置連接主機超時(單位:毫秒)
URLConnection.setReadTimeout(int):設置從主機讀取數據超時(單位:毫秒)
我這里
按照上述方法設置沒有問題的哦

B. java 方法 執行超時處理

java 1.5以上的Future類可以執行超時處理。

jdk1.5自帶的並發庫中Future類中重要方法包括get()和cancel(),get()獲取數據對象,如果數據沒有載入,就會阻塞直到取到數據,而 cancel()是取消數據載入。另外一個get(timeout)操作,表示如果在timeout時間內沒有取到就失敗返回,而不再阻塞。

代碼如下:

importjava.util.concurrent.Callable;
importjava.util.concurrent.ExecutionException;
importjava.util.concurrent.ExecutorService;
importjava.util.concurrent.Executors;
importjava.util.concurrent.TimeUnit;


importcom.sun.corba.se.impl.orbutil.closure.Future;
importcom.sun.corba.se.impl.orbutil.threadpool.TimeoutException;
publicclassThreadTest{

publicstaticvoidmain(String[]args)throwsInterruptedException,
ExecutionException{

finalExecutorServiceexec=Executors.newFixedThreadPool(1);

Callable<String>call=newCallable<String>(){
publicStringcall()throwsException{
//開始執行耗時操作
Thread.sleep(1000*5);
return"線程執行完成.";
}
};

try{
Future<String>future=exec.submit(call);
Stringobj=future.get(1000*1,TimeUnit.MILLISECONDS);//任務處理超時時間設為1秒
System.out.println("任務成功返回:"+obj);
}catch(TimeoutExceptionex){
System.out.println("處理超時啦....");
ex.printStackTrace();
}catch(Exceptione){
System.out.println("處理失敗.");
e.printStackTrace();
}
//關閉線程池
exec.shutdown();
}
}

C. java後台調用外部介面超時了怎麼

java後台調用外部介面超時了,超時了就重新請求啊,一般處理是網路不好造成的,直接返回就行了、

D. java客戶端調用webservice時 連接超時知道是網路原因 ,如何重試如果不重試程序就死瑣了,

先把連接超時的時間設置長一點!
拋異常處理時,空處理異常,繼續調用連接方法,不過,伺服器一般都有連接超時的時間的,超過時間連接不上,就會自動中斷客戶端的請求。釋放資源!

E. java socket里的time_wait狀態怎麼處理有什麼有效的解決辦法嗎,謝謝!

TIME_WAIT這個狀態是TCP/IP設計時為考慮網路的可靠性所必須的,主動發起關閉連接的一方在接收到被動關閉連接方發出的FIN後就會進入TIME_WAIT狀態,這個狀態最長會持續2*MSL(Max Segment Life)時間,其作用是(1)主動方發出的ACK可能會在網路中丟失,如果丟失被動方會重新發出FIN,如果提前關閉了連接就無法接收到重發的FIN。(2)使游盪在網路中的分組在經過2*MSL超時後消失。
TIME_WAIT這個設計是為了網路可靠性的考慮,具體設定時間長短需要根據網路情況決定,超時時間Windows默認設置一般為四分鍾,也就是說主動方打開的埠最長在四分鍾內不會被釋放,導致可用埠減少。

TIME_WAIT的默認等待時間操作系統設置一般都較為保守,如果網路連接中出現大量TIME_WAIT狀態,可以考慮修改設置(1)修改操作系統配置減少TIME_WAIT時間,Windows上的設置方法是進入注冊表的HKLM->SYSTEM->CurrentControlSet->services->TcpIp->Parameters,添加一個DWORD項「TcpTimedWaitDelay」,時間可設置的短一些(比如60秒或30秒)(2)使用Socket提供的SO_LINGER選項,當SoLinger設置為0時Socket會取消關閉連接等待(不建議)。

F. java,請問怎麼對這個連接網址時,超時的異常加一個處理

1、用try{}catch(){}捕抓異常,判斷返回是否目標
2、用Thread.sleep()暫停

G. 怎麼做java超時處理方法

importjava.text.SimpleDateFormat;
importjava.util.Date;
importjava.util.concurrent.Callable;
importjava.util.concurrent.Future;
importjava.util.concurrent.FutureTask;
importjava.util.concurrent.TimeUnit;

classTest26{
publicstaticvoidmain(String[]args){
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
System.out.println("開始:"+sdf.format(newDate()));
Future<String>future=newFutureTask<String>(newCallable<String>(){
publicStringcall()throwsException{
test();
returnnull;
}
});

try{
future.get(10,TimeUnit.SECONDS);//執行10秒結束
}catch(Exceptione){
}
System.out.println("結束:"+sdf.format(newDate()));
}

publicstaticvoidtest(){
inti=1;
while(true){
if(i==0){
break;
}
}
}
}

閱讀全文

與java如何應對網路超時相關的資料

熱點內容
高中網路班有多少 瀏覽:759
5g手機支持的網路 瀏覽:732
蘋果網路限制密碼 瀏覽:613
如何正確對待網路文學作文 瀏覽:595
哪個牌子的電視能連接網路 瀏覽:951
手機重置網路相關數據 瀏覽:4
網路介面如何接電腦 瀏覽:867
建網路平台去哪裡申請 瀏覽:260
網路連接上微信語音顯示網路異常 瀏覽:458
網路備案中心在哪裡 瀏覽:765
能上網但沒網路連接圖標 瀏覽:271
移動網路必須動態撥號嗎 瀏覽:312
連接過的無線網路怎麼刪除 瀏覽:756
數據挖掘與網路安全 瀏覽:141
手機能上網顯示網路異常 瀏覽:351
網路波動手機就會重啟 瀏覽:2
抱歉網路異常請稍後重試 瀏覽:956
車載安卓大屏連接無線網路 瀏覽:756
魔百合無線網路密碼 瀏覽:787
山東網路營銷實業投資售後服務 瀏覽:721

友情鏈接