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


相关文章内容简介
推荐阅读
  • 11 2019-01
    哪个代理IP好用?推荐效果不错的代理IP

    很多人商家都想刷单,但又担心多刷回导致IP被封;做网络营销推广的人也担心发帖太多而导致IP地址被封,更害怕账号都被封了等等,网络的发展,许多人的工作都需要使用换IP工具,代理IP就

  • 21 2019-05
    代理服务器不同类型用途不同

    代理服务器不同类型用途不同,其实代理其实分很多种,不同的代理,其作用或者是使用的场景可能是不一样的,不会混为一谈,那么这些代理都有什么不同呢?

  • 21 2019-06
    如何验证ip代理是否可以用

    如何验证ip代理是否可以用?网络上有很多的免费代理ip,但是有效率低的可怜,这个是为什么呢?这是因为用的人太多了,同一个ip无数人用来访问同一个网站,ip就会被封掉。那么如何验证ip是

  • 18 2019-06
    游戏多开能用动态ip代理吗?

    游戏多开能用动态ip代理吗?如果ip更换比较频繁的话,系统会提示登陆环境异常,可能会限制登陆的,那么游戏多开的时候更换ip,还要不要使用动态ip代理呢?

  • 25 2019-04
    动态IP代理选用什么套餐使用好?

    很多人会疑惑,动态IP代理选用什么套餐使用好?到底是按照有效时间选,还是按照提取IP数量选呢?关于这些问题,小编就机灵代理为大家介绍下,其实很多动态IP代理的商家都针对用户的需求

  • 16 2019-07
    自建ADSL拨号代理服务器划算吗?

    自建ADSL拨号代理服务器划算吗?许多人真的是忍受够了免费代理,老是出问题,那么自建ADSL拨号代理服务器怎样呢?成本高吗?是否划算?

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