「超时延时java」时延 延时

博主:adminadmin 2022-12-11 13:21:08 68

本篇文章给大家谈谈超时延时java,以及时延 延时对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

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 子类

JAVA中 如何使用延迟?

Java中主要有两种方法来实现延迟,即:Thread和Timer

1、普通延时用Thread.sleep(int)方法,这很简单。它将当前线程挂起指定的毫秒数。如

try

{

Thread.currentThread().sleep(1000);//毫秒

}

catch(Exception e){}

在这里需要解释一下线程沉睡的时间。sleep()方法并不能够让程序"严格"的沉睡指定的时间。例如当使用5000作为sleep()方法的参数时,线 程可能在实际被挂起5000.001毫秒后才会继续运行。当然,对于一般的应用程序来说,sleep()方法对时间控制的精度足够了。

2、但是如果要使用精确延时,最好使用Timer类:

Timer timer=new Timer();//实例化Timer类

timer.schedule(new TimerTask(){

public void run(){

System.out.println("退出");

this.cancel();}},500);//五百毫秒

这种延时比sleep精确。上述延时方法只运行一次,如果需要运行多次, 使用timer.schedule(new MyTask(), 1000, 2000); 则每间隔2秒执行MyTask()

怎样让“java”延迟函数?

Java中主要有以下方法来实现延迟

普通延时用Thread.sleep(int)方法,这很简单。它将当前线程挂起指定的毫秒数。如

try

{

Thread.currentThread().sleep(1000);//毫秒

}

catch(Exception e){}

在这里需要解释一下线程沉睡的时间。sleep()方法并不能够让程序"严格"的沉睡指定的时间。例如当使用5000作为sleep()方法的参数时,线 程可能在实际被挂起5000.001毫秒后才会继续运行。当然,对于一般的应用程序来说,sleep()方法对时间控制的精度足够了。

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

java 方法 执行超时处理

java 1.5以上的Future类可以执行超时处理。

jdk1.5自带的并发库中Future类中重要方法包括get()和cancel(),get()获取数据对象,如果数据没有加载,就会阻塞直到取到数据,而 cancel()是取消数据加载。另外一个get(timeout)操作,表示如果在timeout时间内没有取到就失败返回,而不再阻塞。

代码如下:

import java.util.concurrent.Callable;

import java.util.concurrent.ExecutionException;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import java.util.concurrent.TimeUnit;

import com.sun.corba.se.impl.orbutil.closure.Future;

import com.sun.corba.se.impl.orbutil.threadpool.TimeoutException;

public class ThreadTest {  

  

    public static void main(String[] args) throws InterruptedException,  

            ExecutionException {  

          

        final ExecutorService exec = Executors.newFixedThreadPool(1);  

          

        CallableString call = new CallableString() {  

            public String call() throws Exception {  

                //开始执行耗时操作  

                Thread.sleep(1000 * 5);  

                return "线程执行完成.";  

            }  

        };  

          

        try {  

            FutureString future = exec.submit(call);  

            String obj = future.get(1000 * 1, TimeUnit.MILLISECONDS); //任务处理超时时间设为 1 秒  

            System.out.println("任务成功返回:" + obj);  

        } catch (TimeoutException ex) {  

            System.out.println("处理超时啦....");  

            ex.printStackTrace();  

        } catch (Exception e) {  

            System.out.println("处理失败.");  

            e.printStackTrace();  

        }  

        // 关闭线程池  

        exec.shutdown();  

    }  

}

如何用java在socket上设置时间延迟

try {

//创建服务器套接字,于9999端口监听

ServerSocket server = new ServerSocket(9999);

//设置超时时间,以毫秒为单位,如果accept方法阻塞的时间超过设定的时间,

//将抛出SocketTimeoutException异常

server.setSoTimeout(10000);

//进行阻塞监听

Socket client = server.accept();

} catch (SocketTimeoutException e) {

System.out.println("连接超时");

}catch (Exception e) {

e.printStackTrace();

}

超时延时java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于时延 延时、超时延时java的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-11,除非注明,否则均为首码项目网原创文章,转载请注明出处。