社区
Java SE
帖子详情
java 阻塞式socket+多任务处理
fnststart
2013-12-03 11:26:03
小菜最近碰到一个问题,
采用多线程socket通信模式,有多个客户机可能发送处理请求。
server端的serversocket每接受一个任务请求,就往任务队列添加一个任务,然后返回任务状态给客户端。
这时候有另外一个任务处理线程,只要任务队列不为空就取一个出来处理。
整个流程就是这样,应该采用什么方式来设计。
我把任务处理线程也设计成阻塞式线程了,结果就是只有一个线程能执行。。
...全文
253
5
打赏
收藏
java 阻塞式socket+多任务处理
小菜最近碰到一个问题, 采用多线程socket通信模式,有多个客户机可能发送处理请求。 server端的serversocket每接受一个任务请求,就往任务队列添加一个任务,然后返回任务状态给客户端。 这时候有另外一个任务处理线程,只要任务队列不为空就取一个出来处理。 整个流程就是这样,应该采用什么方式来设计。 我把任务处理线程也设计成阻塞式线程了,结果就是只有一个线程能执行。。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
MiceRice
2013-12-04
打赏
举报
回复
引用 楼主 fnststart 的回复:
我把任务处理线程也设计成阻塞式线程了,结果就是只有一个线程能执行。
总体思路没啥问题。楼主会用线程池么? 起步:监听专门用一个线程,也可以理解为分发线程;监听到新的连接请求后,就将这个Socket作为一个任务扔给线程池。 进阶:同时注意线程池的任务数量是否太多,如果太多了要不要适量增加线程池的线程数;如果更多的情况下,是否要拒绝连接请求以保证服务器端压力不要太大;还有是否要注意闲置连接(连接建立后啥事不干);还有是否要注意长时间忙碌连接(可能死循环了之类的)。
爱跳舞的铅笔头
2013-12-04
打赏
举报
回复
首先说一下,楼主前面的设计是没有问题的,但是任务处理线程处理完一个任务,要把这个任务从任务队列里清楚,然后下一次再从队列里取出第一个任务继续处理,这样没有问题。 然后可以提一个建议,楼主可以楼主可以多创建几个处理任务的线程,同时处理任务,这样就设计线程同步问题的处理,楼主需要使用线程锁来解决线程同步问题,相关问题,可以到网上搜一下,这方面的例子有很多。
fnststart
2013-12-03
打赏
举报
回复
哈哈,对于两个阻塞式线程,只能用sleep让两个线程同时工作了。 你说的NIO一部方式还不是很了解,有时间好好了解下
suciver
2013-12-03
打赏
举报
回复
看你客户socket的数量了,同步方式理解和代码写起来要简单,但是占用大量的系统资源,客户不多的时候可以用同步方式,如果客户达到几千上万的用NIO的异步方式。
其实我是真性情
2013-12-03
打赏
举报
回复
应该用生产者消费者模式来设计吧,具体实现几句话说不清楚,楼主自己摸索吧,任务处理线程这地方有点问题,任务处理线程是阻塞的没问题,因为不过它应该是用来调度的而不是由他来处理,就是只要任务队列不为空就取一个出来
处理
。这里不是取出来就处理,这样当然就编程单线程了,应该是只要任务队列不为空就取一个出来然后
开一个处理线程进行处理
。你的任务线程是阻塞的,但是处理线程是多线程就可以了。
java
socket
编程例子_百度架构大牛的
Java
TCP/IP
Socket
编程开发经验分享,真香
如今,TCP/IP已成为计算机网络协议事实上的标准,而
Java
凭 借其跨平台特性和对网络编程的强大支持能力,在网络应用中已占据了主导地位。本书基于TCP/IP套接字的相关原理,对如何在
Java
中 进行套接字编程作了深入浅出的介绍。《
Java
TCP_IP
Socket
编程》内容简明扼要,条理清晰,并在讲解相应的概念或编程技巧时列举了大量的示例程序,能够使读者在动手过程中加深理解,而每章结束时的练习...
百度10年架构师分享的(
Java
TCP/IP
Socket
编程开发经验)看完受益匪浅!
从各方面看,这一介绍并不全面,但能够使读者与贯穿全书的概念和术语相同步。计算机网络、分组报文和协议关于地址关于名字客户端和服务器什么是套接字第2章介绍了简单的客户端和服务器的结构这章中的代码能作为进行各种练习的起点。套接字地址TCP套接字UDP套接字希望大家都认真阅读哦,进步肯定不止一点点,下个月就是跳槽的高峰期了,我给大家整理了很多互联网大厂的面试题,包含腾讯,字节,阿里等等,在跳槽之前好好准备准备冲一波~想要了解的,→可取第3章涵盖了有关消息的创建和解析的基础内容。
✨【
Socket
网络编程性能篇】(四) 高并发大挑战!NIO、epoll/kqueue 如何让你的服务器“飞”起来?
摘要(148字): 本文探讨高并发场景下传统
Socket
模型的性能瓶颈(线程开销大、上下文切换频繁等),并介绍I/O多路复用技术如何通过单线程监控大量连接实现突破。重点解析Linux的epoll和macOS的kqueue机制,以及它们在
Java
NIO中的实现——Selector组件。通过非
阻塞
Channel注册与事件驱动处理,
Java
NIO显著提升服务器并发能力,支撑Nginx/Netty等高性能框架。文末附代码示例,为开发者提供实践参考。 标签 #高性能网络 #
Java
NIO #epoll #高并发设
java
的nio与io对比
本文并非
Java
.io或
Java
.nio的使用手册,也不是如何使用
Java
.io与
Java
.nio的技术文档。这里只是尝试比较这两个包,用最简单的方
式
突出它们的区别和各自的特性。
Java
.nio提出了新的流(stream)通讯概念并且加入了新的缓冲、文件流以及
socket
(套接字)特性。
java
.io 概览 这个包通过数据流和序列化机制来实现系统输入和输出。并且支持多种类型的数据流,
对比
Java
.nio 和
Java
.io
原文: 本文并非
Java
.io或
Java
.nio的使用手册,也不是如何使用
Java
.io与
Java
.nio的技术文档。这里只是尝试比较这两个包,用最简单的方
式
突出它们的区别和各自的特性。
Java
.nio提出了新的流(stream)通讯概念并且加入了新的缓冲、文件流以及
socket
(套接字)特性。
java
.io 概览 这个包通过数据流和序列化机制来实现系统输入和输出。并且
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章