java - Java 类(如 Socket)中如何实现超时阻塞调用

标签 java io timeout

Java中有许多API支持blockingcall(timeout),例如Socket、Lock等。这些东西在Java中是如何实现的?

我试图找出答案,但它导致 native 代码不可见:(

在 native 级别的java中是否使用了类似的方法,例如创建线程并在超时时中断它?如果是这样,那么同样可以在 Java 级别完成,为什么要使用 native ?

最佳答案

它导致 native 代码不可见这通常意味着它没有在 Java 中实现。通常它是由操作系统实现的。您可以获取 Linux 的源代码,但不能获取 Windows 的源代码。

使用Java线程中断,实际上并不中断线程。它只是设置一个标志,不会唤醒所有阻塞操作。不使用此机制,因为它并不总是您想要的。

关于java - Java 类(如 Socket)中如何实现超时阻塞调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14194777/

相关文章:

java - 无法使用 Apache POI 制作示例 xls 文件

c++ - C++-对 `__gxx_personality_seh0'的 undefined reference

ruby - 超时::循环中的错误异常

multithreading - 套接字Winsock异步阻止同时读取写入

java - 我将如何跨多行搜索一串单词

c# - 为什么即使传输正在进行,HttpWebRequest 也会超时?

javascript - Jquery:设置页面加载超时

java - 多线程、性能和精度考虑

java - JVM CMS 垃圾收集问题

java - 在 Firebase 中公开我的服务帐户凭据会具体暴露什么?