您的位置:首页 > 新闻资讯 >文章内容
java多线程的几种实现方式
来源:互联网 作者:admin 时间:2019-02-10 09:19:00

  爬虫在遇到大数据的时候,但线程抓取数据太慢了,需要使用多线程。这多线程如何实现的呢?今天小编介绍下关于java多线程的几种实现方式:


  1、定时器


  定时器可以说是一种基于线程的一个工具类。可以定时的来执行某个任务。比如要在凌晨的时候汇总一些数据,比如要每隔10分钟抓取一次某个网站上的数据等等,总之计时器无处不在。我们一般将需要定时完成的任务称之为计划任务,这在很多的系统中是非常常见的,比如linux的计划任务,比如Windows下的任务计划等等。我们自己的系统中也需要很多定时执行的也都需要计划任务。最简单的计划任务就可以通过jdk给我提供的API来实现,当然也有很多的计划任务的框架,比如spring的schedule以及著名的quartz。我们这里不去讨论其他的计划任务框架,我们就来看一下jdk所给我们提供的API来实现定时任务。


java多线程的几种实现方式


  2、继承Thread类


  万物皆对象,那么线程也是对象,对象就应该能够抽取其公共特性封装成为类,使用类可以实例化多个对象,那么实现线程的第一种方式就是继承Thread类的方式。继承Thread类是最简单的一种实现线程的方式,通过jdk给我们提供的Thread类,重写Thread类的run方法即可,那么当线程启动的时候,就会执行run方法体的内容。


  3、基于线程池的方式


  我们知道,线程和数据库连接这些资源都是非常宝贵的资源。那么每次需要的时候创建,不需要的时候销毁,是非常浪费资源的。那么我们就可以使用缓存的策略,也就是使用线程池。当然了,线程池也不需要我们来实现,jdk的官方也给我们提供了API。


  4、实现Runnable接口


  实现Runnable接口也是一种常见的创建线程的方式。使用接口的方式可以让我们的程序降低耦合度。Runnable接口中仅仅定义了一个方法,就是run。


  其实Runnable就是一个线程任务,线程任务和线程的控制分离,这也就是上面所说的解耦。我们要实现一个线程,可以借助Thread类,Thread类要执行的任务就可以由实现了Runnable接口的类来处理。


  这就是Runnable的精髓之所在!使用Runnable实现上面的例子步骤如下:


  定义一个类实现Runnable接口,作为线程任务类


  重写run方法,并实现方法体,方法体的代码就是线程所执行的代码


  定义一个可以运行的类,并在main方法中创建线程任务类


  创建Thread类,并将线程任务类做为Thread类的构造方法传入


  启动线程


  5、带返回值的线程实现方式


  我们发现上面提到的不管是继承Thread类还是实现Runnable接口,发现有两个问题,第一个是无法抛出更多的异常,第二个是线程执行完毕之后并无法获得线程的返回值。那么下面的这种实现方式就可以完成我们的需求。这种方式的实现就是我们后面要详细介绍的Future模式,只是在jdk5的时候,官方给我们提供了可用的API,我们可以直接使用。但是使用这种方式创建线程比上面两种方式要复杂一些


  6、使用内部类的方式


  这并不是一种新的实现线程的方式,只是另外的一种写法。比如有些情况我们的线程就想执行一次,以后就用不到了。那么像上面两种方式都还要再定义一个类,显得比较麻烦,我们就可以通过匿名内部类的方式来实现。使用内部类实现依然有两种,分别是继承Thread类和实现Runnable接口。


  7、使用Spring来实现多线程


  这种方式依赖于Spring3以上版本,我们可以通过Spring的@Async注解非常方便的实现多线程。


  以上介绍了java多线程的几种实现方式,每个方式各有优点,至于选择哪个,可以根据实际需求进行选择的。


相关文章内容简介
推荐阅读
  • 13 2019-07
    HTTP代理一种辅助营销工具

    HTTP代理一种辅助营销工具,尤其是大数据,网络营销。如今大部分的行业都使用到大数据的,爬虫使用HTTP代理来抓取数据无疑是更快的。而且HTTP代理可以突破IP限制,各类营销都可以使用得上

  • 25 2019-03
    爬虫程序中调用动态ip代理的方法

    动态ip代理对于爬虫程序来说,是非常重要的组成部分,如果仅仅是编写爬虫程序,不做抓取使用,这没有加入动态ip代理也没有什么,但如果要让爬虫程序直接去爬取数据,这是不能够的。

  • 09 2019-01
    爬虫使用HTTP代理能突破IP限制吗

    大家可能对于HTTP代理并不是很了解,其实工作中会经常使用到HTTP代理,一些需要换IP的工作,经常使用的就是HTTP代理,当然还有其他的代理,但主要用的还是HTTP代理。

  • 18 2019-06
    独享IP池比共享IP池好么?

    独享IP池比共享IP池好么?目前来说固有的IP数量满足不了日益增长的IP需求,所以现在大家用的基本都是共享代理IP池。不过还有独享代理IP的,是不是独享IP池比共享IP池好么?

  • 30 2019-04
    代理IP能应付日益增加的反爬虫吗?

    代理IP能应付日益增加的反爬虫吗?都知道如果爬虫没有伪装好,那么在爬取的过程中体验是非常差的,将会遇到各种的反爬虫,比如各种奇怪的验证码、被网站封IP、各种动态加载、userAgent访

  • 30 2020-06
    免费代理ip软件哪个好

    针对互联网ip特殊的应用场景,需要使用代理ip去完成任务,业务的应用场景有很多,对ip的要求也是各种各样,针对业务需求去决定ip的质量要求,所以代理ip中就有一种开放的免费代理ip,如果

在线咨询
大客户经理
大客户经理
1829380381
13316264505

大客户经理微信

微信公众号

微信公众号

回到顶部