当前位置: 首页 > news >正文

织梦制作手机网站模板免费下载微信与与网站建设

织梦制作手机网站模板免费下载,微信与与网站建设,网站程序开发语言,wordpress手机导航栏模板我们的bossgroup和workgroup都是使用的NioEventLoopGroup。其内部有一个EventExecutor类型的数组用来存储所有的线程组。 NioEventLoopGroup {EventExecutor[] children; }NioEventLoopGroup继承自MultithreadEventExecutorGroup,构造函数不指定线程数默认会根据系…

我们的bossgroup和workgroup都是使用的NioEventLoopGroup。其内部有一个EventExecutor类型的数组用来存储所有的线程组。

NioEventLoopGroup {EventExecutor[] children;
}

NioEventLoopGroup继承自MultithreadEventExecutorGroup,构造函数不指定线程数默认会根据系统cpu进行计算获取。是一个线程池实现类。

在MultithreadEventExecutorGroup构造函数里初始化children。调用newChild方法创建NioEventLoop实例赋给children。EventExecutor[] children 元素实例类型是NioEventLoop。

来看下具体代码:

protected MultithreadEventExecutorGroup(int nThreads, Executor executor,EventExecutorChooserFactory chooserFactory, Object... args) {checkPositive(nThreads, "nThreads");if (executor == null) {//executor 初始化executor = new ThreadPerTaskExecutor(newDefaultThreadFactory());}children = new EventExecutor[nThreads];for (int i = 0; i < nThreads; i ++) {boolean success = false;try {//newChild方法就是创建一个NioEventLoop实例,设置executorchildren[i] = newChild(executor, args);success = true;}}//...
}

executor是ThreadPerTaskExecutor类型,其execute方法就是创建一个线程执行runnable参数任务。

public final class ThreadPerTaskExecutor implements Executor {private final ThreadFactory threadFactory;public ThreadPerTaskExecutor(ThreadFactory threadFactory) {this.threadFactory = ObjectUtil.checkNotNull(threadFactory, "threadFactory");}@Overridepublic void execute(Runnable command) {threadFactory.newThread(command).start();}
}

newChild方法就是创建一个NioEventLoop实例,设置executor。

NioEventLoop是一个很重要的类,很多事件逻辑都是在该类中完成。

下面是NioEventLoop类主要方法。
在这里插入图片描述

NioEventLoop继承自SingleThreadEventExecutor。是一个单线程处理类。我们创建的channel都会和该类进行绑定。

主要属性

属性名说明
taskQueue任务队列,被执行的任务首先会被放到任务队列。
executor执行器,上面创建child传入ThreadPerTaskExecutor类型
selector绑定的selector
thread当前EventLoop的运行线程

主要方法

方法说明
register(Channel channel)绑定channel
addTask(Runnable task)新增一个任务到TaskQueue
pollTask()取出一个任务
startThread()启动线程,会判断当前EventLoop内的线程状态,线程是否已运行,否则调用 doStartThread()启动线程
doStartThread()会调用executor.execute(Runnable)启动一个线程运行入参任务,将启动线程赋值给thread变量。入参会调用run()方法。
execute(Runnable task)执行一个任务,首先会调用addTask加入队列,然后判断是否wakeup执行线程
inEventLoop(Thread thread)判断当前线程和内部变量thread是否是同一个线程
runAllTasks(long timeoutNanos)执行任务队列里的任务
select(curDeadlineNanos)调用Selector的select方法,阻塞监听事件发生
processSelectedKeys();处理监听到的SelectedKeys
processSelectedKey(SelectionKey k, AbstractNioChannel ch)处理具体的某一key事件
http://www.yayakq.cn/news/260375/

相关文章:

  • 响应式手机网站模版seo优化网站建设
  • 双语网站方法如何去除网站外链
  • 关于网站设计的书wordpress设置超链接
  • wordpress模板适合做什么站wordpress提交360
  • 水头网站建设网站开发软件设计文档模板
  • 家庭网络建站庆云网站seo
  • 四川省商投建设公司官网365优化大师软件下载
  • 怎样建设那种游戏网站外贸网站建设平台有哪些
  • 做化验的网站台州市网站制作
  • 四川集团网站建设上海公司查名一网通
  • 无锡建设局评职称网站网站如何做的有气质
  • 半岛官方网站下载网站建设腾讯课堂
  • 国外设计网站怎么登陆建设体育用品网站分析
  • 兴华建设集团有限公司网站jsp电商网站开发流程
  • 山东省住房和城乡建设厅网站主页浙江省网站建设报价
  • 网站简约式布局特点女生学软件工程很难吗
  • 企业怎样建立自己的网站手机设计网
  • 做电商网站用什么系统省建设厅网站二建考试
  • 东莞网站建设专业品牌实训百度搜索引擎的总结
  • 如何做网站内页排名静态网页制作期末试卷及答案
  • 合肥网站制作需织梦做的网站织梦修改网页
  • 中国建设银行网站官网下载企业培训计划方案
  • 做汽车配件生意的网站工商局网站查询入口
  • 做网站需要买ip地址吗昆明软件开发公司推荐
  • 做网站视频学什么专业网页设计与制作教程题
  • 好的html5网站seo优化或网站编辑
  • 请人做个网站多少钱网络舆情风险研判报告
  • 外贸接单十大网站安阳网站制作价格
  • 做简历做得好的网站上海到北京顺丰快递要多久
  • 手机ui设计网站网站建设情况通报