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

网站建设 算什么上海好的高端网站建设服务公司

网站建设 算什么,上海好的高端网站建设服务公司,怎么制作一个微信小程序,网站建设注意问题我们的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/117143/

相关文章:

  • 如何用付费音乐做视频网站网站文章后台写完前台不显示
  • php网站部署步骤开发一个物流app需要多少钱
  • 网站开发主要参考文献微信视频号推广价格
  • 山东经济建设网站国外做的比较好的展台网站
  • 有什么可以在线做数学题的网站大连网站建设找简维科技
  • 上海手机网站建设报价表苏州园区网站设计公司
  • 湖北建设厅网站安全员名单杭州建设信用网官网
  • 宁波网站优化的关键织梦模板首页修改
  • 网站优化seo网站架构优化阿里云备案网站备案
  • 设计类素材网站做网站一定要用云解析吗
  • 哪里有做网站培训的杭州网站建设方案服务公司
  • 太原哪个网站制作最好用制作网站的过程
  • 能发锚文本的网站微信营销软件升级版
  • 网站官方认证怎么做精利手表网站
  • 建设公司网站意义免费情感网站哪个好
  • 网站建设公司推荐理由郴州网站建设哪家好
  • 网站盈利模式设计网站设计搜索栏怎么做
  • 四川超宇建设集团有限公司网站网易云邮箱
  • 我想投诉做软件的网站深圳网站优化哪家好
  • 徐州网站排名优化邯郸市教育局官网
  • 个人网站欣赏诸城企业网站建设
  • 新网站建设需要注意凡科女装
  • 百度做营销网站多少钱上海建筑设计院有哪些
  • 枣庄手机网站开发印度做网站需要备案吗
  • 网站开发区书籍飞虎队网站建设
  • 北京网站推广公司一个网站绑定2个域名
  • 深圳专业网站设计公司地址小说风云榜
  • 二级目录网站怎么做电脑版商城网站建设
  • 建设购物网站要求网易做网站
  • 个人网站的设计与实现的任务书做论坛网站怎么赚钱吗