java网络编程的一个问题

njtucomputer 2008-03-16 10:31:36
现在想做一个代理的功能,接收HTTP请求,然后转发,现在是收到一个请求就起一个线程处理,虽然也用了线程池管理线程,但是如果一个用户在不停的点击功能,不停的发请求,这边的线程很快就不够用了,一般网络编程是怎么处理这种问题的,能不能之前的请求都抛弃,只响应最后一个请求?
...全文
121 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dracularking 2008-03-17
  • 打赏
  • 举报
回复
servlet怎么管理的
老紫竹 2008-03-17
  • 打赏
  • 举报
回复
请参考tomcat的thread的配置部分。呵呵,这些都是比较成熟的配置了。
老紫竹 2008-03-17
  • 打赏
  • 举报
回复
我想,你应该制定一些规则了!,比如

设置每个IP最高的同时连接数
设置每个IP下个连接的延迟数,类似于Thread.sleep();

总之,然后后面的等待,
如果超过等待队列,就直接返回ERROR.
njtucomputer 2008-03-17
  • 打赏
  • 举报
回复
现在做的线程池 就是队列啊 如果线程用完了 就在队列等。

现在的问题是 用户可能在一个页面上不停的点击 就不停的发请求 我这边线程处理不完啊
wensheng_zh2007 2008-03-17
  • 打赏
  • 举报
回复
up 1楼
千里冰封820 2008-03-17
  • 打赏
  • 举报
回复
你可以把它们的请求信息放到一个映射里面
它们的IP做为一个键,而请求的内容做为值
因为Map是唯一的键,所以后续的请求会自动覆盖以前的请求,这样你取出来的就一定是最后的请求了
njtucomputer 2008-03-17
  • 打赏
  • 举报
回复
我就想知道如果一个用户 连续发请求 怎么抛弃前面的请求 直接处理最后一个请求 就是不知道哪些请求是同一个用户连续发出的应该抛弃的
网络咖啡 2008-03-16
  • 打赏
  • 举报
回复
支持楼上的,如果对于并发要求不高的话,还是安排一个消息队列的好
healer_kx 2008-03-16
  • 打赏
  • 举报
回复
一个请求就起一个线程,是玩具的做法,真正的HTTP是TCP短连接,你又只是转发,不需要做处理,最好的做法是在单一的线程内做事情,而不是起线程,.
线程不会加速你的程序的.当然了,也不是不可以起线程,你可以在每一个线程安置一个消息队列,视消息队列的盈满程度,决定是不是要使用另外一个线程.

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧