首页 > 其他分享 >11.NiO多线程优化

11.NiO多线程优化

时间:2024-06-15 18:30:31浏览次数:14  
标签:11 java NiO 单线程 selector 事件 import 多线程 nio

场景

单线程配合一个selector选择器管理多个channel上的事件。

问题

1.多核cpu,如果是单线程就会让cpu的力量被浪费。

2.单线程处理多个事件,如果某个事件耗费时间比较久,就会影响其它事件的处理。

例如:redis单线程写的,底层网络用的类似于nio和selector方式编写,所以缺点就是某个操作耗时较长,其他操作就会受到影响。所以redis中推荐使用时间复杂度低的方法,不能用耗时太长的方法。

优化方案

多个线程和多个selector来优化。一个selector跟一个线程相关联。

分为两类:

1.Boss(thread, selector) 只负责建立连接,只关注accept事件。一个boss就够了。

2.Worker(thread, selector),关注读事件,写事件。worker的数量最好跟cpu的核心数一样。

 方案一:使用ConcurrentLinkedQueue解决问题

package com.xkj.netty;

import lombok.extern.slf4j.Slf4j;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.*;
import java.nio.charset.StandardCharsets;
import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.ConcurrentLinkedQueue;

@Slf4j
/**
 * 服务端

标签:11,java,NiO,单线程,selector,事件,import,多线程,nio
From: https://blog.csdn.net/qq_36352889/article/details/139694059

相关文章

  • 读取超7100MB/s最高仅51度的长江存储PC411 SSD!雷神MIX PRO迷你机评测
    一、前言:搭载长江存储SSD和酷睿Ultra5125H处理器的雷神迷你机英特尔酷睿Ultra系列移动处理器发布半年之后,搭载它的各路迷你主机陆续出现在消费者面前。最近,雷神带来了全新的MIXPro迷你机,它就搭载了酷睿Ultra5125H处理器,还有广受好评的长江存储PC411SSD。先说SSD!现在我......
  • 【C++】C++11新特性
    C++11是C++程序设计语言标准的一个新的版本,在2011年由ISO批准并发布。C++11新标准从而代替了原来的C++98和C++03.。C++11标准是对C++的一次巨大的改进和扩充。在核心语法,STL标准模板等方面增加众多新功能。例如新增auto,deltype,nullptr等关键字,增加范围for......
  • ASP.NET Core应用程序11:使用模型绑定
      模型绑定是使用从HTTP请求获得的数据值,创建操作方法和页面处理程序所需的对象的过程。本章描述模型绑定系统的工作方式;显示它如何绑定简单类型、复杂类型和集合;并演示如何控制流程,以指定请求的哪一部分提供应用程序所需的数据值。  本章介绍了模型绑定特性,展示了如何使......
  • CC2500和CC1101移植说明
    主要通过如何移植、移植注意、关于芯片配置、如何生成导出配置四大步骤来说明CC2500和CC1101移植首先通过下图1这个宏进行选择 &如何移植要移植的部分在CC2500_hal.c和CC2500_hal.h中, 搜索"//移植"就可以定位到库所需的依赖,需要根据您的环境实现这些函数&移植......
  • C++多线程:生产者消费者模式
    文章目录一、模式简介二、头文件、全局变量2.1仓库类的设计2.1.1关于仓库类的分析2.1.2仓库类的设计代码2.2工厂类的设计2.2.1关于工厂类的分析2.2.2工厂类的设计代码a将产品item放到仓库repob将产品item从仓库repo取出c生产者操作d消费者操作2.2.3主函数代......
  • 4-字符串-11-反转字符串-LeetCode344
    4-字符串-11-反转字符串-LeetCode344LeetCode:题目序号344更多内容欢迎关注我(持续更新中,欢迎Star✨)Github:CodeZeng1998/Java-Developer-Work-Note技术公众号:CodeZeng1998(纯纯技术文)生活公众号:好锅(Lifeismorethancode)CSDN:CodeZeng1998其他平台:CodeZeng1998、......
  • C#等待多线程任务都执行结束
    有时为了快速处理多个任务,同时启用多个线程执行,需要等待都执行结束后再执行后面的方法,实现方法如下:点击查看代码usingSystem;usingSystem.Threading.Tasks;classProgram{staticasyncTaskMain(string[]args){vartask1=Task.Run(()=>DoWork......
  • DreamJudge-1177-查找学生信息
    1.题目描述TimeLimit:1000msMemoryLimit:32768mb“臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会并不太多。幸运的是,你意外得到了一份北大图书馆的图书借阅记录,于......
  • 116. 小欧的卡牌(卡码网周赛第十七期(23年oppo提前批B组笔试真题))
    116.小欧的卡牌(卡码网周赛第十七期(23年oppo提前批B组笔试真题))题目描述小欧有n张卡牌,第i张卡牌的正面写了个数字ai,背面写了个数字bi。小欧对于每张卡牌可以选择一面向上,她希望最终向上的数字之和为3的倍数。你能告诉小欧有多少方案吗?由于答案过大,请对10^9+7......
  • 115. 组装手机(卡码网周赛第十七期(23年oppo提前批B组笔试真题))
    115.组装手机(卡码网周赛第十七期(23年oppo提前批B组笔试真题))题目描述小欧是手机外壳供应商,小蕊是手机零件供应商。小欧已经生产了n个手机外壳,第i个手机外壳售价ai元,小蕊生产了n个手机零件,第i个手机零件售价bi元。在组装手机中,一个手机外壳与一个手机零件可......