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/