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


相关文章内容简介
推荐阅读
  • 05 2019-05
    急需高质量的HTTP代理IP来救场

    急需高质量的HTTP代理IP来救场,有没有什么好的推荐呢?大家都知道,现在是大数据高速发展时代,爬虫行业日益火爆,从业者如过江之鲫,数不胜数,说到爬虫就不得不提另外一个词:代理IP

  • 24 2019-05
    代理服务器正向和反向的定义分析

    代理服务器还分正向代理和反向代理的,这正向和反向,一听起来就是相反的,它们之间有什么不同的,机灵代理下面就为大家揭晓下代理服务器正向和反向的定义分析。

  • 17 2019-03
    防止游戏封号的几种方法,使用代理IP效果更好

    游戏封号对于玩家来说,这是非常严重的问题,如果被封号了,这些辛苦都白费了,关键还没有任何的收获,因此想要玩好游戏不被封号,就要多注意一些封号的信息,避免犯了这些问题而导致

  • 18 2019-05
    滥用代理IP后果

    滥用代理IP后果,很少人会关注,都是看着别人用得好,自己也想用。而毫无章法的使用,其效果使真的使一言难尽。举个例子:

  • 26 2019-04
    安卓模拟器设置代理无效怎么办?

    安卓模拟器设置代理无效怎么办?我们有时候会遇到设置代理,但是不生效的情况,每当遇到这种情况,大家是怎么处理的呢?这到底是网络的问题,还是代理的问题呢?搞不懂!

  • 24 2019-04
    最新ip代理软件都有哪些用途?

    最新ip代理软件都有哪些用途?主要是用于网络上的IP限制场景,解决IP限制问题,或者是认为网络访问慢需要进行加速,又或者是用于其他的一些地方,我们一起去看看这最新ip代理软件的用途

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