the jstack: NETTYSERVER-WORKER-19-thread-4" prio=10 tid=0x00000000136d3800 nid=0x75dc runnable [0x00000000499be000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method) at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269) at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79) at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87) - locked <0x000000076ce96e58> (a io.netty.channel.nio.SelectedSelectionKeySet) - locked <0x000000076ce96658> (a java.util.Collections$UnmodifiableSet) - locked <0x000000076ce85be0> (a sun.nio.ch.EPollSelectorImpl) at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98) at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:618) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:306) at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) at java.lang.Thread.run(Thread.java:745)
the select doc : /** * Selects a set of keys whose corresponding channels are ready for I/O * operations. * * <p> This method performs a blocking <a href="#selop">selection * operation</a>. It returns only after at least one channel is selected, * this selector's {@link #wakeup wakeup} method is invoked, or the current * thread is interrupted, whichever comes first. </p> * * @return The number of keys, possibly zero, * whose ready-operation sets were updated * * @throws IOException * If an I/O error occurs * * @throws ClosedSelectorException * If this selector is closed */ public abstract int select() throws IOException; so the select is blocck unitl a channel is selected, but the jstack java.lang.Thread.State: is RUNNABLE,why not is BLOCKED. the offical api explain BLOCKED : public static final Thread.State BLOCKEDThread state for a thread blocked waiting for a monitor lock. A thread in the blocked state is waiting for a monitor lock to enter a synchronized block/method or reenter a synchronized block/method after calling Object.wait. because that's Select block until a channel is selected(not blocked waiting for a monitor lock) ,so it not the thread state BLOCKED. am i right ? -- ============================================= fuyou001 Best Regards