您的位置:首页 > 新闻资讯 >文章内容
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多线程的几种实现方式,每个方式各有优点,至于选择哪个,可以根据实际需求进行选择的。


相关文章内容简介
推荐阅读
  • 01 2019-08
    爬虫代理IP可以获取指定数据

    爬虫代理IP可以获取指定数据!爬虫要想实现快速抓取大量的数据,并且可以获取指定数据,这少不了代理IP的帮忙。爬虫代理IP是最基础以及有必要的,当你想要爬取他人网站时,如果一直使用

  • 27 2019-12
    代理IP​有什么用途?

    代理IP​有什么用途?当IP被限制的时候,通过换IP的方式来解决。被封IP的原因有很多,当达到一些网站设定的阈值后,或者访问频率过快,IP就会被封。因此,为了解决IP限制问题,HTTP代理IP就

  • 05 2020-02
    代理IP带来了很大的便利

    代理IP是通过第三方网络协议传输的加密软件,其实跟IP加速器的原理差不多,是一种特殊的网络服务,允许客户端通过这个服务器和服务器进行非直接的连接。

  • 29 2019-09
    工作中使用优质代理IP的好处

    都说”工欲善其事必先利其器”,这句俗语表达了要做好一件事情,选对帮助你的工具是非常重要的。机灵代理对于这一点也非常认同,因为经常看到不少网友为了贪图便宜跟优惠,在需要用到

  • 22 2019-04
    利用IP代理突破--获取、测试、使用IP

    利用IP代理突破,这是很多爬虫通常的做法,不过并不是说用就能用了的,因为优质的IP代理并不好找,在找的过程中,我们或许需要先进行获取、测试,再使用IP的。本文主要讲利用IP代理突破

  • 19 2019-06
    爬虫要使用多个ip代理怎么找

    爬虫要使用多个ip代理怎么找?爬虫由于需要抓取比较多的数据,这对于ip代理的需求比较大的,如果只是使用一个代理,这是不能满足需求的。既然需要多个ip代理,上哪里找好?

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

大客户经理微信

微信公众号

微信公众号

回到顶部