收藏本页 | 设为主页 | RSS
LOGO

我就上乐乐吧

最近因为有一个通知服务的需要,我们特地弄了个排队通知系统,但是在实施的过程中,完全被坑得不行,有些项目对接方设定的回调地址,是根本回调不通,这样的...

您当前的位置:首页 » 技术杂萃
全站公告
重要提示!

本站收集各类美图,以无LOGO原汁原味图为主!欢迎大家交流。
怕失联,请认准如下地址:
微博:传送门
土豆:传送门
电报:传送门
微信:superimagelove
花瓣:传送门
Q群1:231151757
Q群2:583138281
文件解压密码:593668.com
热心赞助

站内搜索
 
相关文章
热门文章
热搜词组
文章归档
友情链接
Java多线程同时打开多个网页地址

发布日期:2019-11-29  关键词: Java

最近因为有一个通知服务的需要,我们特地弄了个排队通知系统,但是在实施的过程中,完全被坑得不行,有些项目对接方设定的回调地址,是根本回调不通,这样的情况下,队列就会被堵塞。

比如每个请求,设定超时3秒,在量小的情况下,还好。高压力的情况下,时不时地遇上那种完全通知不成功的,这样整个通知队列就会堵塞到根本不能及时快速通知对方了。

毕竟服务的对象也比较多,总不可能每个商户都提供一个队列,大多数情况下是分成3个通知队列,然后总有些猪队友写的回调地址完全不通,搞得每次都要等超时出异常才继续处理队列,这样如果超时过多就会影响到同队列的其它的商户了。

而系统所服务的商户又对这种通知的时效性要求比较高,所以在考虑再三,每个通知之间也没有相对密切的关系,也不用进行什么交互,干脆就决定选择Java多线程。

以之前的文章《Java多线程实现的两种方法》做为基础,大体代码调整如下:

多线程通知类代码如下:
public class Post extends Thread{
   
   String url=""; //通知地址
   String para=""; //通知参数
   public Post(String url,String para){
        this.url=url;
        this.para=para;
    }

   public void run(){
      System.out.println("open url:"+this.url);
      ... //发起通知具体代码
   }

}

调用的办法就是,多线程并发一次通知十个地址[当然这个数量,可以根据相应的机器配置来调整]。

public static void main(String[] args) throws Exception{
  Post post1=new Post("传送门;,"");        //启动线程1
  post1.start();
  Post post2=new Post("传送门;,"");        //启动线程2
  post2.start();
  ...
  Post post2=new Post("传送门;,"");        //启动线程10
  post2.start(); 
}

执行过程结果如下:

Java多线程同时打开多个网页地址,Java,技术杂萃

还别说,这种场合下,立马就提高了通知效率,客户也比较满意。当然这里还有一个问题需要提及下,因为有些平台是有防火墙的,所以过多的线程连接可能会引发被BAN,所以请注意下,相应的多线程数不宜太多。
另有朋友说,这个能利用来做爬虫,当然想弄肯定也是可以,不过也许用python来做爬虫会更好点。
猜您喜欢:
Q群: 231151757微信:superimagelove 官网:www.593668.com