java - Netty NetworkInterface.getNetworkInterfaces() 被阻止
问题描述
我春天的代码是:
group = SysUtil.isLinux()?new EpollEventLoopGroup():new NioEventLoopGroup();
和代码块在这里,线程无法继续,我使用jstack,线程总是在这里,但线程状态是可运行的:
"init_context_comm_t0" #14 daemon prio=5 os_prio=0 tid=0x00007f5fdc889800 nid=0x27 in Object.wait() [0x00007f5fd7ffc000]
java.lang.Thread.State: RUNNABLE
at io.netty.util.NetUtil.(NetUtil.java:156)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
locked <0x00000000835e5868> (a java.util.Vector)
locked <0x00000000837abda8> (a java.util.Vector)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
at java.lang.Runtime.load0(Runtime.java:809)
locked <0x0000000083320da8> (a java.lang.Runtime)
at java.lang.System.load(System.java:1086)
at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:214)
at io.netty.channel.epoll.Native.(Native.java:60)
at io.netty.channel.epoll.IovArray.(IovArray.java:57)
at io.netty.channel.epoll.EpollEventLoop.(EpollEventLoop.java:60)
at io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:106)
at io.netty.util.concurrent.MultithreadEventExecutorGroup.(MultithreadEventExecutorGroup.java:64)
at io.netty.channel.MultithreadEventLoopGroup.(MultithreadEventLoopGroup.java:49)
at io.netty.channel.epoll.EpollEventLoopGroup.(EpollEventLoopGroup.java:91)
at io.netty.channel.epoll.EpollEventLoopGroup.(EpollEventLoopGroup.java:78)
at io.netty.channel.epoll.EpollEventLoopGroup.(EpollEventLoopGroup.java:59)
at io.netty.channel.epoll.EpollEventLoopGroup.(EpollEventLoopGroup.java:43)
at io.netty.channel.epoll.EpollEventLoopGroup.(EpollEventLoopGroup.java:36)
at com.sunyainfo.sunyacloud.communication.server.CommunicateEndpoint.(CommunicateEndpoint.java:46)
at com.sunyainfo.sunyacloud.communication.server.CommunicateEndpoint.init(CommunicateEndpoint.java:115)
at com.sunyainfo.sunyacloud.mvc.ContextListener$1.run(ContextListener.java:39)
at java.lang.Thread.run(Thread.java:748)
重现步骤在spring init代码中,调用这个:
group = SysUtil.isLinux()?new EpollEventLoopGroup():new NioEventLoopGroup();
网络版
4.0.36.Final
JVM 版本(例如 java -version)
openjdk version "1.8.0_141"
OpenJDK Runtime Environment (build 1.8.0_141-8u141-b15-1~deb9u1-b15)
OpenJDK 64-Bit Server VM (build 25.141-b15, mixed mode)
操作系统版本(例如 uname -a)
Linux debian 4.9.0-6-amd64 #1 SMP Debian 4.9.82-1+deb9u3 (2018-03-02) x86_64 GNU/Linux
提示:我在 docker 中运行此代码
解决方案
这可能是一个错误...请在 netty 问题跟踪器中使用完整的复制器打开一个问题,以便我们查看。此外,您可能想升级您的 netty 版本,以排除它尚未修复的可能性。
推荐阅读
- python-3.x - 如何让 stdn.readline() 读取输入
- json - 用于在 JSON 中转义双引号的 Groovy 脚本
- python - 如何仅获取当前线程号?
- c - 在 Visual Studio 中构建解决方案
- python - 使用 pandas 嵌套 where 语句?
- javascript - 如何使用递归函数写入多个文件
- c# - Textarea 值作为空值提交
- jquery - Select2 Jquery,添加项目和阻止自定义项目,只允许下拉列表中的项目
- python - Pandas Python 如何用相等的 len 创建 2 个值?
- kubernetes - Kubernetes如何获取当前节点的名字