1. java 页面超时
最简单的方法就是在使用session中的值之前先判断一下取出来的值是否为null,如果为null就跳转到指定页面。或者你也可以捕获那个空指针异常然后再跳转到指定页面
因为程序并不知道session什么时候过期,你只能在取值的时候去判断值是否为空或者捕获空指针异常。在这里我提几个想法吧,我没有验证过,
1. 写一个线程去监控session是否过期,过期了就跳转,不过这样的话,如果很多人访问的话就会产生很多会话,就要开很多线程,似乎不太可取
2.单独写一个类专门用来处理session的存值和取值,然后在方法内部判断是否为空或捕获空指针异常,这样的话只要调用这个类的方法就行了,不用每个地方都进行判断了
2. Java:连接请求超时是什么意思超时就不再请求了
连接请求超时 是在请求数据库或者请求网页时 防止应用一直占用资源的一个解决办法。
连接请求超时,一般是网络中断、阻塞等由于网络的问题造成的临时原因。
一般情况下连接超时之后,就进行再次请求,如果重复三次之后仍然是超时 那就不再请求了。
3. Java中如何实现线程的超时中断
如果你是要在子线程超时后直接关闭的话可以这样:
exec=Executors.newFixedThreadPool(1);
Callable<String> call = new Callable<String>() {
public String call() throws Exception {
//开始操作
//TimeTaskTest.star(null);
return "线程执行完成";
}
};
Future<String> future = exec.submit(call);
//设置为30分钟超时
future.get(1000*60*time , TimeUnit.MILLISECONDS);
=========================================
如果你是在进行其他操作的话那就比较麻烦了,目前我想到的是在子线程中一直访问某个变量,超时时守护线程改变这个值,然后子线程读到后退出,不过这个有个问题,就是当子线程卡死在某个环节时完全无用
4. java如何捕捉请求超时引起的错误
Socket的|?
connect(SocketAddress endpoint, int timeout)
connect方法中timeout可以设置超时时间,如果时间内没有连接则 报超时异常
你只需要在相应的catch块里做处理即可
5. java项目页面为什么会超时
session超时?因为客户端没有发起请求。时间超过默认session超时时间
6. 怎么做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;
}
}
}
}
7. java题目运行超时是怎么回事
首先确保没有加package,类名称为Main。
为了运行效率,请使用
[java]view plain
因为pat系统对scanner支持不友好且运行时间长。
BufferedReaderbf=newBufferedReader(newInputStreamReader(System.in));
请在使用完bufferedreader之后立刻使用close();方法关闭,否则可能会发生内存泄漏(关闭的越早越好)。
【重要】请不要随便import没有用到的包,亲测若是导入了java.util.Scanner可是你没有用到scanner,就会返回非零。
二、对于运行超时
一般对于100ms时间限制的题目,基本ac不了,哪怕优化得再好。因为很多乙级题目运行时长(该死的jvm启动)在100ms上下,运气好ac的多,运气差全超时!
200ms以上的题目,若是运行超时,那就请不要用暴力破解。
还是超时的话,建议换语言。官方说明:选择合适的语言也是一种技巧,所以不给你java放宽时间限制!
8. Java:这两种设置超时时间有什么区别
以下来自官方文档,学习编程只要看文档就可以了
setSoTimeout
public void setSoTimeout(int timeout)
throws SocketException
启用/禁用带有指定超时值的 SO_TIMEOUT,以毫秒为单位。将此选项设为非零的超时值时,在与此 Socket 关联的 InputStream 上调用
read() 将只阻塞此时间长度。如果超过超时值,将引发 java.net.SocketTimeoutException,虽然 Socket
仍旧有效。选项必须在进入阻塞操作前被启用才能生效。超时值必须是 > 0 的数。超时值为 0 被解释为无穷大超时值。
参数:
timeout - 指定的以毫秒为单位的超时值。
抛出:
SocketException -
如果底层协议出现错误,例如 TCP 错误。
connect
public void connect(SocketAddress endpoint,
int timeout)
throws IOException
将此套接字连接到服务器,并指定一个超时值。超时值零被解释为无限超时。在建立连接或者发生错误之前,连接一直处于阻塞状态。
参数:
endpoint - SocketAddress
timeout - 要使用的超时值(以毫秒为单位)。
抛出:
IOException - 如果在连接期间发生错误
SocketTimeoutException
- 如果在连接之前超时期满
IllegalBlockingModeException
- 如果此套接字具有关联的通道并且该通道处于非阻塞模式
IllegalArgumentException
- 如果端点为 null 或者此套接字不支持 SocketAddress 子类
9. 请问如何让java执行某条语句超时时跳过该语句(或抛出异常)
放到线程里(比如:Thread)执行
然后线程.join(2000);等待2秒,捕捉中断异常即可,到了两秒会触发中断异常,然后继续往下走
10. java的timer类如何判断程序超时呢
参照如下的:
Timer类是用来执行任务的类,它接受一个TimerTask做参数
TimerTask是个抽象类,他扩展了Object并实现了Runnable接口,因此你必须在自己的Task中实现publicvoid run()方法。这也就是我们需要执行的具体任务。
Timer有两种执行任务的模式,最常用的是schele,它可以以两种方式执行任务:1:在某个时间(Data),2:在某个固定的时间之后(intdelay).这两种方式都可以指定任务执行的频率
我们指定一个线程A,调用对象B.wait(timeout),线程A就会阻塞,直到timeout到了,B醒来会使A继续执行。
其实Timer类是为多任务定时设计的,在实现里面,B是一个任务队列(实现上就是一个array),维护着所有使用当前Timer定时的任务,它们可是一堆货真价实的线程实例。每次线程A都取队列中距离当前时间最近的的定时任务,跟当前时间比较,然后wait(timeout)这段时间。线程唤醒的时刻也是队列中这个定时任务运行的时刻。然后线程继续取下一个定时任务,继续wait(timeout)。从这里我们能看出来,每次定时都有额外的时间开销,比如要维护队列等,所以Java的Timer类不保证实时。
Timer中最主要由三个部分组成:
任务TimerTask 、 任务队列: TaskQueue queue 和 任务调试者:TimerThreadthread
Timer对任务的调度是基于绝对时间的。
所有的TimerTask只有一个线程TimerThread来执行,因此同一时刻只有一个TimerTask在执行。
任何一个TimerTask的执行异常都会导致Timer终止所有任务。
由于基于绝对时间并且是单线程执行,因此在多个任务调度时,长时间执行的任务被执行后有可能导致短时间任务快速在短时间内被执行多次或者干脆丢弃多个任务。
由于Timer/TimerTask有这些特点(缺陷),因此这就导致了需要一个更加完善的任务调度框架来解决这些问题。
默认情况下,只要一个程序的timer线程在运行,那么这个程序就会保持运行。当然,你可以通过以下四种方法终止一个timer线程:
调用timer的cancle方法。你可以从程序的任何地方调用此方法,甚至在一个timertask的run方法里。
让timer线程成为一个daemon线程(可以在创建timer时使用newTimer(true)达到这个目地),这样当程序只有daemon线程的时候,它就会自动终止运行。
当timer相关的所有task执行完毕以后,删除所有此timer对象的引用(置成null),这样timer线程也会终止。
调用System.exit方法,使整个程序(所有线程)终止。