本文主要是对java 多线程知识的总结,做个记录,温故知新。

多线程有三种实现方式,具体如下。

继承Thread类创建线程类

重写run方法,完成线程需要做的任务。

创建实例

调用start()启动线程

继承Thread,创建线程类

创建实例-启动线程

实现Runnable接口创建线程类

创建实现Runnable类,重写run方法,完成线程需要做的任务

创建Runnable实例,作为Thread类的Target

创建Thread实例,启动线程

创建实现Runnable类

创建Thread实例,启动线程

使用Callable和Future创建线程

创建实现Callable类,重写call方法,完成线程需要做的任务,并返回值

使用FutureTask包装Callable对象

使用FutureTask实例作为Thread类的Target

创建Thread实例,启动线程

调用FutureTask实例的get方法,获取返回值

创建实现Callable类,重写call

创建Thread实例,包装Callable,获取返回值

优缺点

使用Thread类方式,编写简单,不过因为继承了Thread类,不能再继承其他父类,带来了Java的单继承特性带来的局限

使用实现Runnable接口方式,只是实现了Runnable接口,还可以再继承其他父类,有利于程序的健壮性,代码能够被多个线程共享,代码与数据是独立的。适合多个相同程序代码的线程去处理同个资源的情况,把线程同程序的代码、数据有效的分离,较好地体现了面向对象的设计思想。

使用实现Callable接口方式,只是实现了Callable接口,也可以再继承其他父类,除了具有Runnable接口的优点之外,而且还有返回值,很好的适用需要返回值的场景,不过编写比较复杂,得根据具体情况选择。

总结

因此一般推荐使用实现Runnable接口创建多线程。如果需要返回值的场景,则使用Callable接口的方式创建多线程。

java的多线程实现方式_java 多线程实现方式相关推荐

  1. java 多线程两种方式_JAVA多线程实现的两种方式

    java多线程实现方式主要有两种:继承Thread类.实现Runnable接口 1.继承Thread类实现多线程 继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了 ...

  2. java多线程的实现方式_JAVA多线程实现的三种方式

    最近在做代码优化时学习和研究了下JAVA多线程的使用,看了菜鸟们的见解后做了下总结. 1.JAVA多线程实现方式 JAVA多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用E ...

  3. java 线程的基本概念_Java多线程——多线程的基本概念和使用

    一.进程和线程的基础知识 1.进程和线程的概念 进程:运行中的应用程序称为进程,拥有系统资源(cpu.内存) 线程:进程中的一段代码,一个进程中可以有多段代码.本身不拥有资源(共享所在进程的资源) 在 ...

  4. java多线程 cpu分配_java多线程总结(转载)

    Java 多线程编程总结 --------------------------------------------------------------------------------------- ...

  5. java隋唐演义游戏下载_JAVA多线程

    第一节 多线程背景知识介绍 多线程作用:可以帮助简化模型,还能编写强大的代码.进程与线程的基础概念:Eclipse QQ都属于进程.进程是程序(任务)的执行过程,它持有资源(共享内存.共享文件)和线程 ...

  6. java 多线程 返回值_JAVA多线程实现和应用总结:如何使用有返回值的多线程

    最近在做代码优化时学习和研究了下JAVA多线程的使用,看了菜鸟们的见解后做了下总结. 1.JAVA多线程实现方式 JAVA多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用E ...

  7. Java模拟售票窗口代码_java多线程模拟售票,多个窗口售票

    package com.ma.thread001; /** * 多线程模拟售票,多个窗口售票 * @author ma * */ public class SellTicktDemo implemen ...

  8. java多线程的实现方式_Java 多线程(一)——多线程的实现方式

    一.前言 Java 异常的处理方式与自定义异常 我们已经讲完了,从今天开始我们来学习多线程. 二.与多线程相关的概念 2.1.并发与并行并发:指两个或多个事件在同一个时间段内发生,具体如下图所示: 并 ...

  9. java实现线程的方式_java多线程实现的四种方式

    java多线程实现的四种方式1.继承Thread类,重写run方法(其实Thread类本身也实现了Runnable接口) 2.实现Runnable接口,重写run方法 3.实现Callable接口,重 ...

最新文章

  1. [Python]Python操作/管理Mysql学习(一)
  2. 入口文件到控制器 php,workerman的入口文件_PHP开发框架教程
  3. 5G 承载网 — 基于 SDN 的 5G 承载网
  4. 用D触发器构造寄存器
  5. python向数据库中添加参数_第四篇:python操作数据库时的传参问题
  6. 状压dp之二之三 炮兵阵地/玉米田 By cellur925
  7. linux mpeg-4,嵌入式MPEG-4解码系统的设计与实现,嵌入式MPEG-4解码系统,嵌入式Linux,视频码流,P...
  8. 程序写不好,总理当到老!
  9. IE6的重定向页面无法跳转解决
  10. bi工具选型_数据分析工具:选合适了,分析也能事半功倍
  11. .net 遍历数组找重复值写入一个新数组_第二轮 Python 刷题笔记一:数组
  12. Linux如何创建一个内核模块,创建你自己的内核模块
  13. 加强网站安全、重构公司的门户网站项目(C# VS2003)
  14. kindeditor上传图片宽度自适应
  15. Safari 安装 Tampermonkey(油猴)插件
  16. EXCEL长数字显示和转化为文本
  17. 膝关节前交叉韧带重建术后取钉记
  18. netty报错LEAK: ByteBuf.release() was not called before it‘s garbage-collected.的解决方法
  19. 单片机c语言拟合二次曲线y=a0+a1x+a2x^2
  20. 网络映射iscsi服务器,群晖iSCSI管理器连接网络硬盘详细介绍和配置使用说明

热门文章

  1. View页面间的跳转
  2. python装饰器功能是冒泡排序怎么做_传说中Python最难理解的点|看这完篇就够了(装饰器)...
  3. php如何删除单个数组,如何在php中使用array_splice删除单个数组成员?
  4. python中gettext文件格式_Python locale.gettext方法代码示例
  5. 这篇文章带你彻底理解红黑树
  6. IDEA 2020 本土化,真的是全中文了,新手,开心了!
  7. 面试官:Spring事务的传播行为有几种?
  8. spring事务配置,声明式事务管理和基于@Transactional注解的使用
  9. Activiti与Spring的整合
  10. 使用redis的zset实现排行榜