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

做童装在哪个网站做广告矿坛器材友情交换

做童装在哪个网站做广告,矿坛器材友情交换,做网站需要学会些什么,2022企业所得税优惠政策1.阻塞模式 一个线程来处理多个连接显得力不从心 accept等待连接 是一个阻塞方法 read读取SocketChannel中的数据 是一个阻塞方法 /*** 服务端* param args* throws IOException*/public static void main(String[] args) throws IOException {//建立一个缓冲区ByteBuffer b…

1.阻塞模式

一个线程来处理多个连接显得力不从心

accept等待连接 是一个阻塞方法

read读取SocketChannel中的数据 是一个阻塞方法

 /*** 服务端* @param args* @throws IOException*/public static void main(String[] args) throws IOException {//建立一个缓冲区ByteBuffer byteBuffer = ByteBuffer.allocateDirect(16);//创建一个服务器ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();//给服务器绑定一个端口8000,让客户端来连接serverSocketChannel.bind(new InetSocketAddress(8000));//存储多个客户端的连接通道List<SocketChannel> channels = new ArrayList<>();while(true) { //保证可以多个客户端连接//建立与客户端的连接//SocketChannel 与客户端之间通信的数据通道log.info("等待客户端连接connecting");//accept方法是一个阻塞方法,会让线程暂停,客户端连接建立以后才会继续执行SocketChannel socketChannel = serverSocketChannel.accept();log.info("已连接connected...{}", socketChannel);channels.add(socketChannel);for (SocketChannel sc: channels ) {//接受客户端发送的数据log.info("等待客户端向SocketChannel中传输数据...{}", sc);//read方法是一个阻塞方法,会让线程暂停sc.read(byteBuffer);byteBuffer.flip();//读模式String byteBufferContent = StandardCharsets.UTF_8.decode(byteBuffer).toString();log.info("byteBufferContent={}", byteBufferContent);byteBuffer.clear();//写模式,从0开始log.info("读完毕..{}", sc);}}}
/*** 客户端* @param args* @throws IOException*/public static void main(String[] args) throws IOException {SocketChannel socketChannel = SocketChannel.open();//连接服务端,地址localhost:8000socketChannel.connect(new InetSocketAddress("localhost", 8000));//将hello字符串->byte[]->ByteBuffer->socketChannelsocketChannel.write(StandardCharsets.UTF_8.encode("hello"));System.out.println("waiting...");}

2.非阻塞模式

/*** 服务端* @param args* @throws IOException*/public static void main(String[] args) throws IOException {//建立一个缓冲区ByteBuffer byteBuffer = ByteBuffer.allocateDirect(16);//创建一个服务器ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();//****ServerSocketChannel配置为非阻塞-默认是阻塞true,可以让accept方法变成非阻塞serverSocketChannel.configureBlocking(false);//给服务器绑定一个端口8000,让客户端来连接serverSocketChannel.bind(new InetSocketAddress(8000));//存储多个客户端的连接通道List<SocketChannel> channels = new ArrayList<>();while(true) { //保证可以多个客户端连接//建立与客户端的连接//SocketChannel 与客户端之间通信的数据通道//**非阻塞模式下,如果没有客户端连接accept方法返回null值,线程会继续执行SocketChannel socketChannel = serverSocketChannel.accept();if(null != socketChannel) {log.info("已连接connected...{}", socketChannel);channels.add(socketChannel);}for (SocketChannel sc: channels) {//****SocketChannel配置为非阻塞-默认是阻塞true,可以让read方法变成非阻塞sc.configureBlocking(false);//接受客户端发送的数据//**非阻塞模式下,线程会继续执行,如果没有读取到数据会返回0int read = sc.read(byteBuffer);if(read > 0) {byteBuffer.flip();//读模式String byteBufferContent = StandardCharsets.UTF_8.decode(byteBuffer).toString();log.info("byteBufferContent={}", byteBufferContent);byteBuffer.clear();//写模式,从0开始log.info("读完毕..{}", sc);}}}}

 问题:非阻塞模式,会让线程一直在跑,太忙了,不能这么用。参考后续的Selector用法。

http://www.sczhlp.com/news/26070/

相关文章:

  • 佛山网站建设外包公司促销方案
  • 手机安卓系统seo最新技巧
  • 银川做网站哪家好推广通
  • 小程序建站模板外贸接单平台
  • 营销型网站的建设规划海南seo顾问服务
  • 济南做公司网站需要多少钱湖南长沙seo
  • 品牌设计公司名字杭州网站优化服务
  • 长沙企业做网站哪家好代写文章质量高的平台
  • 网站访问量大 处理武汉seo优化分析
  • 西安网络公司排名前十名资阳市网站seo
  • 如何在 Windows 把大写锁定改为语言切换?
  • 一流高职院校建设专题网站如何开发一款app软件
  • 重庆建设厂招工信息网站短视频精准获客
  • 全球最大的设计网站推广软件平台
  • 大连网站推广排名郑州seo实战培训
  • 做外贸是在什么网站许昌网站seo
  • 个人建立网站怎么赚钱排行榜123网
  • 深圳做网站公司注册城乡规划师报考条件
  • 关于网站建设心得体会雅思培训机构哪家好机构排名
  • 景宁建设局网站官网制作网站费用
  • wordpress视频类模板淘宝关键词优化技巧教程
  • 织梦网站访问量统计代码经典软文范例大全
  • 青浦网站招营业员做一休一如何自己做一个网页
  • wordpress播放m3u8成都企业网站seo技术
  • web模板免费下载网站seo职位要求
  • 四边形不等式优化 DP 笔记
  • 珠海企业网站设计广告投放优化师
  • 随州网站优化长沙快速排名优化
  • 网站设计的基本过程百度推广价格
  • 芜湖网站建设哪家好福州关键词搜索排名