Java中有许多API支持blockingcall(timeout)
,如Socket,Lock等。这些东西是如何在Java中实现的?
我试图查明,但它导致本机代码不可见:(
在本机级别的java中是否使用类似的方法,如创建线程并在超时时中断它?如果是这样,那么可以在Java级别完成,为什么要使用native?
答案 0 :(得分:1)
it lead to native code which is not visible
这通常意味着它没有用Java实现。通常它由OS实现。你可以获得Linux的源代码,但不能使用Windows AFAIK。
使用Java线程中断,实际上并不中断线程。它只是设置一个不会唤醒所有阻塞操作的标志。没有使用这种机制,因为它并不总是你想要的。