您的位置:首页 > 新闻资讯 >文章内容
单线程没效率?多线程效果更佳,常用的几种线程池
来源:互联网 作者:admin 时间:2019-03-09 14:50:40

  其实单线程远不能满足我们的需求,毕竟单线程的能力有限,不管怎么抓取,让其慢慢积累都是需要时间的,而我们需要的就是抢时间,以更短的时间获得信息。但是单线程的效率太慢了,还不如使用多线程。


  多线程虽然能解决单线程解决不了的事情,但是它也会给你带来额外的问题。比如成千上万甚至上百万的线程时候,你系统就会出现响应延迟、卡机、甚至直接卡死的情况。为什么会出现这样的原因呢?


  这是因为为每个请求创建一个新线程的开销很大:在创建和销毁线程上花费的时间和消耗的系统资源要比花在处理实际的用户请求的时间和资源更多。


单线程没效率?多线程效果更佳,常用的几种线程池


  除了创建和销毁线程的开销之外,活动的线程也消耗系统资源。机灵代理工程师表示,在一个JVM里创建太多的线程可能会导致系统由于过度消耗内存而用完内存或“切换过度”。所以为了防止资源不足,服务器应用程序需要一些办法来限制任何给定时刻处理的请求数目。而线程池为线程生命周期开销问题和资源不足问题提供了解决方案。常用的几种线程池:


  1.ScheduledThreadPool


  周期线程池,创建一个定长线程池,支持定时及周期性任务执行,通过过schedule方法可以设置任务的周期执行。


  2.newFixedThreadPool


  定长线程池,一个有指定的线程数的线程池,有核心的线程,里面有固定的线程数量,响应的速度快。正规的并发线程,多用于服务器。固定的线程数由系统资源设置。核心线程是没有超时机制的,队列大小没有限制,除非线程池关闭了核心线程才会被回收。


  3.newSingleThreadExecutor


  单任务线程池,创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行,每次任务到来后都会进入阻塞队列,然后按指定顺序执行。


  4.newCachedThreadPool


  可缓冲线程池,只有非核心线程,最大线程数很大,每新来一个任务,当没有空余线程的时候就会重新创建一个线程,这边有一个超时机制,当空闲的线程超过60s内没有用到的话,就会被回收,它可以一定程序减少频繁创建/销毁线程,减少系统开销,适用于执行时间短并且数量多的任务场景。


  不同的线程池,是有效果的差别的,对于线程池的使用,若是需要抓取大量的数据,单个线程无法满足需求,那么使用多线程是必然的选择,而使用线程池能够起到优化的效果,让爬虫爬取变得更加的简单,配合代理IP使用,效果更佳。


相关文章内容简介
推荐阅读
  • 07 2019-05
    苹果手机如何更换静态IP?

    有时候可能手机获取不了IP地址,导致无法正常连接网络,那么如何更换IP地址呢?如果需要长期挂机,是否能设置静态IP使用?苹果手机如何更换静态IP?

  • 03 2019-06
    代理IP对于网站注册的作用

    代理IP对于网站注册的作用是怎样的,平常进行账号注册,也就是注册那么一两个,问题不大。但是如果需要多账号的使用,这就需要多注册账号了。不过很多时候,我们在某些网站进行注册的

  • 23 2019-05
    爬虫要了解代理IP等反反爬虫技术

    爬虫要了解代理IP等反反爬虫技术,学习爬虫,是需要了解关于代理IP的一些知识,当然了,仅仅是了解代理IP也是不够了,还有各种反爬虫,不然写的爬虫无法找到突破口进行抓取信息的。另外

  • 13 2019-06
    怎么提高代理IP资源的使用降低消耗?

    怎么提高代理IP资源的使用降低消耗?由于IP资源是有限的,目前尚不能肆意的使用,而且使用代理IP资源是需要花钱的,那么能不能提高一些使用效率,降低IP资源的损耗,从而降低成本呢?可

  • 25 2019-03
    朋友圈投票,大家会不会利用代理IP刷票?

    以往,大家经常在朋友圈看到一些投票活动,有些人可能会点击进去看看情况,这些投票通过要获取你的信息,如果不是过硬的交情,可能就放弃了。毕竟现今,大家越来越重要保护自己的个人

  • 12 2019-07
    适合大量抓取的代理IP池

    适合大量抓取的代理IP池,都有哪些呢?出于营销或者各种需求,有很多朋友都需要换IP的软件,或者找IP代理,但是这种IP代理有很多,有没有既好用又低价的IP代理池呢,小编今天给大家带干

在线客服
大客户VIP渠道
点击这里给我发消息
讨论QQ群
HTTP代理IP爬虫
客服电话
13318873961