| 
                         DefaultEventExecutorChooserFactory根据线程数创建具体的EventExecutorChooser,线程数如果等于2^n,可使用按位与替代取模运算,节省cpu的计算资源,见源码: 
- @SuppressWarnings("unchecked")  
 - @Override  
 - public EventExecutorChooser newChooser(EventExecutor[] executors) {  
 -     if (isPowerOfTwo(executors.length)) {  
 -         return new PowerOfTowEventExecutorChooser(executors);  
 -     } else {  
 -         return new GenericEventExecutorChooser(executors);  
 -     }  
 - }   
 -     private static final class PowerOfTowEventExecutorChooser implements EventExecutorChooser {  
 -         private final AtomicInteger idx = new AtomicInteger();  
 -         private final EventExecutor[] executors;   
 -  
 -         PowerOfTowEventExecutorChooser(EventExecutor[] executors) {  
 -             this.executors = executors;  
 -         }   
 -  
 -         @Override  
 -         public EventExecutor next() {  
 -             return executors[idx.getAndIncrement() & executors.length - 1];  
 -         }  
 -     }   
 -  
 -     private static final class GenericEventExecutorChooser implements EventExecutorChooser {  
 -         private final AtomicInteger idx = new AtomicInteger();  
 -         private final EventExecutor[] executors;   
 -  
 -         GenericEventExecutorChooser(EventExecutor[] executors) {  
 -             this.executors = executors;  
 -         }   
 -  
 -         @Override  
 -         public EventExecutor next() {  
 -             return executors[Math.abs(idx.getAndIncrement() % executors.length)];  
 -         }  
 -     } 
 
  
newChild(executor, args)的创建细节,见下: 
                        (编辑:泰州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |