Merge pull request #1643, ChannelState branch prediction optimization.

diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/transport/dispatcher/ChannelEventRunnable.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/transport/dispatcher/ChannelEventRunnable.java
index 038adea..44dea94 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/transport/dispatcher/ChannelEventRunnable.java
+++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/transport/dispatcher/ChannelEventRunnable.java
@@ -52,7 +52,15 @@
 

     @Override

     public void run() {

-        switch (state) {

+        if (state == ChannelState.RECEIVED) {

+            try {

+                handler.received(channel, message);

+            } catch (Exception e) {

+                logger.warn("ChannelEventRunnable handle " + state + " operation error, channel is " + channel

+                        + ", message is " + message, e);

+            }

+        } else {

+            switch (state) {

             case CONNECTED:

                 try {

                     handler.connected(channel);

@@ -74,15 +82,6 @@
                     logger.warn("ChannelEventRunnable handle " + state + " operation error, channel is " + channel

                             + ", message is " + message, e);

                 }

-                break;

-            case RECEIVED:

-                try {

-                    handler.received(channel, message);

-                } catch (Exception e) {

-                    logger.warn("ChannelEventRunnable handle " + state + " operation error, channel is " + channel

-                            + ", message is " + message, e);

-                }

-                break;

             case CAUGHT:

                 try {

                     handler.caught(channel, exception);

@@ -93,7 +92,9 @@
                 break;

             default:

                 logger.warn("unknown state: " + state + ", message is " + message);

+            }

         }

+

     }

 

     /**