导航:首页 > 网络安全 > 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如何应对网络超时相关的资料

热点内容
网络安全的展会 浏览:237
高中网络班有多少 浏览:759
5g手机支持的网络 浏览:732
苹果网络限制密码 浏览:613
如何正确对待网络文学作文 浏览:595
哪个牌子的电视能连接网络 浏览:951
手机重置网络相关数据 浏览:4
网络接口如何接电脑 浏览:867
建网络平台去哪里申请 浏览:260
网络连接上微信语音显示网络异常 浏览:458
网络备案中心在哪里 浏览:765
能上网但没网络连接图标 浏览:271
移动网络必须动态拨号吗 浏览:312
连接过的无线网络怎么删除 浏览:756
数据挖掘与网络安全 浏览:141
手机能上网显示网络异常 浏览:351
网络波动手机就会重启 浏览:2
抱歉网络异常请稍后重试 浏览:956
车载安卓大屏连接无线网络 浏览:756
魔百合无线网络密码 浏览:788

友情链接