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


相关文章内容简介
推荐阅读
  • 04 2020-03
    ip代理速度慢的原因

    代理IP是现代社会中很多人经常使用的上网方式,特别是对于一些专业的网络营销人员来说,代理IP资源是他们工作必不可少的工具之一。在选择使用代理IP时,除了IP稳定性和安全性以外,IP速

  • 24 2019-04
    爬虫要依靠代理IP来躲过反爬虫机制

    爬虫要依靠代理IP来躲过反爬虫机制,这是一个比较常见的爬虫应对反爬的方法,毕竟许多网站做了反爬虫策略,或者会对每个IP做频次控制,这是因为自身抓取网站信息的强度和抓取速度太大

  • 06 2020-11
    http代理类型都有什么区别

    在进行购买http代理的时候经常会见到有许多不同类型的代理提供选择,一些新手不知道该买哪种类型的http代理会比较好,机灵代理下面就为大家提供一些关于http代理类型的区别,希望能够给大

  • 23 2019-12
    拨号换ip适合爬虫吗?

    拨号换ip适合爬虫吗?断网拨号换ip不适合爬虫使用,这是为什么呢?我们都知道,断网拨号也是可以换ip的,如果小项目,爬虫使用断网拨号不行么?

  • 10 2019-04
    爬取网站的前期准备:网页分析、代理IP绕过反爬虫

    网络爬虫在爬取一个网站的信息之前,需要注意什么呢?通常需要进行网页的分析,还有反爬虫机制的研究,并准备好代理IP使用,可以找机灵代理的。

  • 30 2020-10
    验证代理IP的几种方法

    在使用代理IP之前,一般都会先进行验证,看看代理IP是否有效。对于高级工程师来说,也许就是几行代码几分钟的事情,对于新手朋友来说,就比较棘手了。今天和大家讨论几种简单的验证代

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

大客户经理微信

微信公众号

微信公众号

回到顶部