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;
}
}
}
}