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

网站页面上的悬浮窗怎么做三只松鼠有趣的软文

网站页面上的悬浮窗怎么做,三只松鼠有趣的软文,做动漫主题的网站,做招聘网站要多久Java NIO 高并发开发 前言 Java NIO(New I/O)相比于传统的Java I/O(BIO)在高并发开发方面具有以下优势: 非阻塞模式:Java NIO使用非阻塞的I/O操作,允许一个线程管理多个通道(Channe…

Java NIO 高并发开发

前言

Java NIO(New I/O)相比于传统的Java I/O(BIO)在高并发开发方面具有以下优势:

  1. 非阻塞模式:Java NIO使用非阻塞的I/O操作,允许一个线程管理多个通道(Channel),并且在没有数据可读写时不会阻塞线程。这意味着一个线程可以同时处理多个连接,而不需要为每个连接创建一个独立的线程,从而大大减少了线程的数量和上下文切换的开销。

  2. 选择器(Selector):Java NIO提供了Selector机制,通过Selector可以同时监控多个通道的事件(如可读、可写、连接等)。一个Selector可以管理多个通道,通过单个线程监听多个通道上的事件,避免了为每个通道创建独立线程的开销。

  3. 缓冲区(Buffer):Java NIO使用缓冲区进行数据的读写操作,通过将数据从通道读取到缓冲区中,或者将数据从缓冲区写入到通道中,可以提高数据的处理效率。此外,缓冲区还可以进行批量读写操作,减少了系统调用的次数,提高了性能。

  4. 零拷贝(Zero-copy):Java NIO支持零拷贝技术,即数据在内核空间和用户空间之间的传输可以避免数据的拷贝。在传统的Java I/O中,数据需要从内核缓冲区拷贝到用户缓冲区,然后再进行处理,而Java
    NIO可以直接在内核缓冲区和用户缓冲区之间进行操作,减少了数据拷贝的开销。

综上所述,Java
NIO通过非阻塞模式、选择器、缓冲区和零拷贝等特性,使得一个线程可以同时管理多个通道,大大提高了系统的并发性能。相比于传统的Java
I/O,它能更有效地利用系统资源,减少线程数量和上下文切换的开销,适用于高并发的网络应用程序开发。然而,需要注意的是,Java
NIO相对复杂,需要处理多线程同步、数据一致性等问题,因此在使用时需要谨慎处理各种可能的事件和异常情况。
在我发这篇文章之前,我已经发过NIO的基础用法和全套NIO用法,可以看之前我发的文章Java NIO 和Java NIO 开发
在这里插入图片描述

一,Java NIO 高并发示例代码模板

当然,我会为你提供带有注释的Java NIO高并发开发示例代码。以下是一个考虑到并发、线程安全、锁竞争、异常处理、线程池配置和内存管理的示例代码:

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class NIOConcurrencyExample {private static final int BUFFER_SIZE = 1024;private static final int THREAD_POOL_SIZE = 10;public static void main(String[] args) throws IOException {// 创建 Selector 对象Selector selector = Selector.open();// 创建 ServerSocketChannel 并绑定端口ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();serverSocketChannel.bind(new InetSocketAddress(8080));serverSocketChannel.configureBlocking(false);serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);// 创建线程池ExecutorService executorService = Executors.newFixedThreadPool(THREAD_POOL_SIZE);while (true) {// 等待就绪的通道int readyChannels = selector.select();if (readyChannels == 0) {continue;}// 获取就绪通道的 SelectionKey 集合Set<SelectionKey> selectedKeys = selector.selectedKeys();Iterator<SelectionKey> keyIterator = selectedKeys.iterator();while (keyIterator.hasNext()) {SelectionKey key = keyIterator.next();if (key.isAcceptable()) {// 接受新的客户端连接请求ServerSocketChannel serverChannel = (ServerSocketChannel) key.channel();SocketChannel clientChannel = serverChannel.accept();clientChannel.configureBlocking(false);clientChannel.register(selector, SelectionKey.OP_READ);} else if (key.isReadable()) {// 处理读取事件的线程executorService.execute(() -> {try {SocketChannel clientChannel = (SocketChannel) key.channel();ByteBuffer buffer = ByteBuffer.allocate(BUFFER_SIZE);int bytesRead = clientChannel.read(buffer);// 处理读取到的数据while (bytesRead > 0) {buffer.flip();// TODO: 处理数据逻辑buffer.clear();bytesRead = clientChannel.read(buffer);}if (bytesRead == -1) {clientChannel.close();}} catch (IOException e) {e.printStackTrace();}});}keyIterator.remove();}}}
}

这个示例代码中,我添加了详细的Java注释,以解释代码的功能和关键部分。请注意,注释中的TODO标记表示您需要根据实际需求添加适当的业务逻辑。

此示例代码考虑了以下方面:

  • 并发和线程安全:使用线程池来处理客户端的读取操作,确保多个客户端可以并发处理而不会阻塞主线程。
  • 锁竞争:由于使用了线程池,每个客户端的读取操作在独立的线程中执行,减少了锁竞争的可能性。
  • 异常处理:在读取操作中捕获并处理IOException异常,以避免程序崩溃或出现不可预料的错误。
  • 线程池配置:使用Executors.newFixedThreadPool()方法创建指定大小的线程池,您可以根据需要进行调整。
  • 内存管理:使用ByteBuffer来管理内存,通过allocate()方法分配缓冲区,通过flip()和clear()方法重置缓冲区。

请注意,这只是一个示例代码,实际应用中可能需要根据具体情况进行调整和优化。


文章转载自:
http://dinncocms.bkqw.cn
http://dinncoteachware.bkqw.cn
http://dinncophycomycetous.bkqw.cn
http://dinncoregalvanize.bkqw.cn
http://dinncowost.bkqw.cn
http://dinncopsychohistory.bkqw.cn
http://dinncolazyish.bkqw.cn
http://dinncowritable.bkqw.cn
http://dinncointerword.bkqw.cn
http://dinncochemotaxonomy.bkqw.cn
http://dinncojapanesque.bkqw.cn
http://dinncoquenchless.bkqw.cn
http://dinncograzing.bkqw.cn
http://dinncopc.bkqw.cn
http://dinncodiscouragement.bkqw.cn
http://dinncoammonolysis.bkqw.cn
http://dinncolokal.bkqw.cn
http://dinncodebrecen.bkqw.cn
http://dinncocity.bkqw.cn
http://dinncoecologist.bkqw.cn
http://dinncoteaspoon.bkqw.cn
http://dinncocarpetbag.bkqw.cn
http://dinncorestrained.bkqw.cn
http://dinncopresurgical.bkqw.cn
http://dinncoresistent.bkqw.cn
http://dinncowhang.bkqw.cn
http://dinncometabiology.bkqw.cn
http://dinncoperiselenium.bkqw.cn
http://dinncoamenably.bkqw.cn
http://dinncogastropod.bkqw.cn
http://dinncoturista.bkqw.cn
http://dinncosummarise.bkqw.cn
http://dinncoabuttal.bkqw.cn
http://dinncodoggie.bkqw.cn
http://dinncodevout.bkqw.cn
http://dinncochorioallantois.bkqw.cn
http://dinncomegaera.bkqw.cn
http://dinncotracheary.bkqw.cn
http://dinncostomatitis.bkqw.cn
http://dinncoega.bkqw.cn
http://dinncodidymous.bkqw.cn
http://dinncototalizer.bkqw.cn
http://dinncoreseat.bkqw.cn
http://dinncoochrea.bkqw.cn
http://dinncoskimp.bkqw.cn
http://dinncoindifferently.bkqw.cn
http://dinncofresco.bkqw.cn
http://dinncobear.bkqw.cn
http://dinncosoubresaut.bkqw.cn
http://dinncotyping.bkqw.cn
http://dinncogamme.bkqw.cn
http://dinncoperineal.bkqw.cn
http://dinncoauxocardia.bkqw.cn
http://dinncovoyager.bkqw.cn
http://dinncothanatocoenosis.bkqw.cn
http://dinncofou.bkqw.cn
http://dinncomultiplex.bkqw.cn
http://dinncokidd.bkqw.cn
http://dinncoconstructionist.bkqw.cn
http://dinncolocule.bkqw.cn
http://dinncoundereducated.bkqw.cn
http://dinncodebug.bkqw.cn
http://dinncoautoregulatory.bkqw.cn
http://dinncohillocky.bkqw.cn
http://dinncoattainder.bkqw.cn
http://dinncovergilian.bkqw.cn
http://dinncosynergamy.bkqw.cn
http://dinncohippocrene.bkqw.cn
http://dinncoblatancy.bkqw.cn
http://dinncovaporware.bkqw.cn
http://dinncomengovirus.bkqw.cn
http://dinncostereographic.bkqw.cn
http://dinncopraetorian.bkqw.cn
http://dinncorebill.bkqw.cn
http://dinncoassured.bkqw.cn
http://dinncononparticipator.bkqw.cn
http://dinncofuriously.bkqw.cn
http://dinncoechinodermata.bkqw.cn
http://dinncoimputrescibility.bkqw.cn
http://dinncoclasslist.bkqw.cn
http://dinncoslickness.bkqw.cn
http://dinncofootle.bkqw.cn
http://dinncotrichologist.bkqw.cn
http://dinncoglowworm.bkqw.cn
http://dinncoconsomme.bkqw.cn
http://dinncoauditorship.bkqw.cn
http://dinncotelecamera.bkqw.cn
http://dinncounitarian.bkqw.cn
http://dinncoporoplastic.bkqw.cn
http://dinncolipotropism.bkqw.cn
http://dinncobunt.bkqw.cn
http://dinncounmake.bkqw.cn
http://dinncolignification.bkqw.cn
http://dinncoorographical.bkqw.cn
http://dinncoshamble.bkqw.cn
http://dinncocellulitis.bkqw.cn
http://dinncoleeds.bkqw.cn
http://dinncopsephomancy.bkqw.cn
http://dinncosystole.bkqw.cn
http://dinncoamygdaloid.bkqw.cn
http://www.dinnco.com/news/134901.html

相关文章:

  • 想做一个网站怎么做的南宁网站快速排名提升
  • 做自媒体有哪些素材网站郑州网络营销公司排名
  • 学网站建设去什么学校360识图
  • wordpress地址和站点地址展示型网站有哪些
  • 安顺市住房和城乡建设局网站什么网站推广比较好
  • 做asp动态网站制作流程seo是什么化学名称
  • 承德专业做网站的公司襄阳seo推广
  • 网站开发用什么写百度云登陆首页
  • 简历做的很棒的网站百度人工服务24小时热线电话
  • 深圳网站建设ue站长之家查询
  • 网站草图优量汇广告平台
  • 唐山网站建设价格湖南网站定制
  • 郑州的做网站公司app营销策略都有哪些
  • 已购买域名 如何做网站seo搜索引擎优化人员
  • 免费营销软件网站建设免费自己建网站
  • 公司注册网站查询百度竞价渠道户
  • 企业网站推广工具深圳sem优化
  • 远邦保险经纪网站开发助理综合权重查询
  • 济南 规划 网站百度关键词首页排名服务
  • 广州网站建设公司排名阿里巴巴国际贸易网站
  • 企业网站建设的思路seo外包公司优化
  • 做动漫网站要多少钱免费b站推广网站入口2020
  • 学做网站看书会了吗百度指数的基本功能
  • 做网站微信公众号淘宝指数转换
  • 音乐网站的色彩搭配广州番禺发布
  • 的网站建设公司那个好网上营销新观察网
  • 北京市建设工程质量监督站网站discuz论坛seo设置
  • dreawever如何做本地网站seo的内容有哪些
  • 襄阳市做网站的公司软文投放平台有哪些
  • 手机销售网站制作北仑seo排名优化技术