当前位置:首页 > 后端开发 > Java中创建多线程的方式

Java中创建多线程的方式

6个月前 (05-21)27

1、继承Thread类的方式:
  步骤1:创建一个继承于Thread类的子类
  步骤2:重写Thread类的run() --> 将此线程执行的操作声明在run()中
  步骤3:创建Thread类的子类的对象
  步骤4:通过此对象调用start():①启动当前线程 ② 调用当前线程的run()

2、实现Runnable接口的方式:

  步骤1:创建一个实现了Runnable接口的类
  步骤2:实现类去实现Runnable中的抽象方法:run()
  步骤3: 创建实现类的对象
  步骤4:将此对象作为参数传递到Thread类的构造器中(Thread(Runnable target)),创建Thread类的对象
  步骤5:通过Thread类的对象调用start()

在上述两种方式中,优先选择是实现Runnable接口的方式,原因:

  1、没有单继承的局限性

  2、实现的方式更适合来处理多个线程共享数据的情况

3、JDK5.0新增方式:实现Callable接口

  步骤1:创建一个实现Callable的实现类

  步骤2:实现call方法,将此线程需要执行的操作声明在call()中

  步骤3:建Callable接口实现类的对象  NewThread newThread = new NewThread();

  步骤4:此Callable接口实现类的对象作为传递到FutureTask构造器中,创建FutureTask的对象 FutureTask futureTask = new FutureTask(newThread);

  步骤5:将FutureTask的对象作为参数传递到Thread类的构造器中,创建Thread对象,并调用start()   new Thread(futureTask).start();

  步骤6:获取Callable中call方法的返回值  Object sum = futureTask.get();

这种方式的优点:

  call()可以返回值的。

  call()可以抛出异常,被外面的操作捕获,获取异常的信息
  Callable是支持泛型的

4、线程池

  步骤1:提供指定线程数量的线程池  

  ExecutorService service = Executors.newFixedThreadPool(10);
  ThreadPoolExecutor service1 = (ThreadPoolExecutor) service;

  步骤2:执行指定的线程的操作。需要提供实现Runnable接口或Callable接口实现类的对象

  service.execute(new NumberThread());//适合适用于Runnable
  service.execute(new NumberThread1());//适合适用于Runnable

  步骤3:关闭连接池

  service.shutdown();

线程池的好处:

  提高响应速度(减少了创建新线程的时间)

  降低资源消耗(重复利用线程池中线程,不需要每次都创建)
  便于线程管理
    corePoolSize:核心池的大小
    maximumPoolSize:最大线程数
    keepAliveTime:线程没任务时最多保持多长时间后会终止

作者:LinAlex
来源链接:https://www.cnblogs.com/LinAlex/p/15270608.html

“Java中创建多线程的方式” 的相关文章

Java集合相关面试问题和答案

Java集合相关面试问题和答案  面试试题 1. Java...

java多线程解决通过接口获取较大量数据

        调用接口的实际场景        在很多项目中都会有调用其他系统接口的情...

Java多线程看这一篇就足够了(吐血超详细总结)

Java多线程看这一篇就足够了(吐血超详细总结)

进程与线程 进程是程序的一次动态执行过程,它需要经历从代码加载,代码执行到执行完毕的一个完整的过程,这个过程也是进程本身从产生,发展到最终消亡的过程。多进程操作系统能同...

Java——线程基础

目录 多线程 并发与并行 进程 线程 进程...

[Java]Axis需要高版本的J2sdk: j2sdk-1_4_2_08

按照 Install Axis 的详尽步骤依次安装了axis-bin-1_2、Tomcat 5.0,也按照要求复制相应的lib文件到Tomcat目录下。 但是,当重新启动Tomcat后,...

java中多线程的实现

1.JAVA多线程实现方式 JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结...

从java的开始,java概述,java配置环境变量

从java的开始,java概述,java配置环境变量

一、java开发入门   java 概述   Java划分为三个技术平台:JavaSE(标准版,含Java基础类库),JavaEE(企业版,技...

Java集合类之Collection接口,集合的“爸爸”接口了解一下?

Java集合类之Collection接口,集合的“爸爸”接口了解一下?

目录 什么是集合? 集合和数组有什么区别? Collection接口 如何遍历集合中的元...

java中List集合分批处理

java中List集合分批处理

java中List集合分批处理 在项目中存在list集合数据量过大,需要对这个list集合进行分批处理,自己写了一个list分批处理的一个算法...

java 管理

背景 java版本的升级也比较频繁, 每年一个版本或更多 虽然java环境变量的配置无技术性可言, 但对于频繁切换也是比较枯燥的 java版...