java多线程的创建方式是面试经常会被问到的一个问题,因此在这里我对java创建多线程的四种方式做一个简单的归纳与总结,便于复习。

一、继承Thread类创建多线程

① 创建一个继承于Thread类的子类。

② 重写Thread类中的run()方法,在run()方法中实现线程需要完成的功能。

③ 创建Thread类的子类的对象,并调用这个对象的start()方法,调用start()后会自动启动当前线程,并调用当前线程的run()方法。

④ 代码演示:

class MyThread extends Thread{@Overridepublic void run() {  System.out.println("继承Tread类创建多线程");}
}public class ThreadCreate1 {public static void main(String[] args) {MyThread myThread = new MyThread();myThread.start();}
}

二、实现Runnable接口创建多线程

① 创建一个实现Runnable接口的类。

② 在这个实现类中实现Runnable接口的run()方法。

③ 创建这个实现类的对象,并将这个对象作为参数传入Thread类的构造器中,然后创建Tread类的对象,调用Tread类对象的start()方法。

④ 代码演示:

class MyRunnable implements Runnable{@Overridepublic void run() {System.out.println("实现Runnable接口创建多线程");}
}public class ThreadCreate2 {public static void main(String[] args) {MyRunnable myRunnable = new MyRunnable();Thread thread = new Thread(myRunnable);thread.start();}
}

三、实现Callable接口创建多线程(jdk5.0后新增的方法)

① 创建一个实现Callable接口的类。

② 在这个实现类中实现Callable接口的call()方法,并创建这个类的对象。

③ 将这个Callable接口实现类的对象作为参数传递到FutureTask类的构造器中,创建FutureTask类的对象。

④ 将这个FutureTask类的对象作为参数传递到Thread类的构造器中,创建Thread类的对象,并调用这个对象的start()方法。

⑤ 代码演示:

class MyCallable implements Callable{@Overridepublic Object call() throws Exception {System.out.println("实现Callable接口创建多线程");return null;}
}public class ThreadCreate3 {public static void main(String[] args) {MyCallable myCallable = new MyCallable();FutureTask futureTask = new FutureTask(myCallable);Thread thread = new Thread(futureTask);thread.start();}
}

四、通过线程池创建多线程(jdk5.0后新增的方法)

① 创建提供指定线程数量的线程池,即创建ExecutorService对象。

② 调用execute()方法执行指定的线程的操作。需要提供实现Runnable接口或Callable接口实现类的对象。

③ 关闭线程池。

④ 代码演示:

class MyRunnable implements Runnable{@Overridepublic void run() {System.out.println("通过线程池创建多线程");}
}public class ThreadCreate4 {public static void main(String[] args) {//1、创建线程池对象ExecutorService service = Executors.newFixedThreadPool(100);//2、这里传入的参数是Runnable接口实现类的对象,并调用execute()方法service.execute(new MyRunnable());//3、关闭线程池service.shutdown();}
}

java创建多线程的四种方式相关推荐

  1. Java 实现多线程的四种方式 超详细

    Java 实现多线程的四种方式 文章目录 Java 实现多线程的四种方式 一.继承 Thread 类 二.实现 Runnable 接口 三.实现 Callable 接口 四.线程池 1,Executo ...

  2. 创建多线程的四种方式

    创建多线程的四种方式 方式一:继承于Thread类 创建一个继承于Thread类的子类 重写Thread类的run()->将此线程执行的操作声明在run()中 创建Thread类的子类的对象 通 ...

  3. Java 创建类的四种方式

    Java 创建类的四种方式 对于上学期已经学习过c++的同学,是不是对另一大编程语言产生了浓厚的兴趣,对于c++的面向对象编程,又和java的面向变量有何区别,下面我们从java四种创建对象来说起. ...

  4. Java 实现多线程的四种方式

    在 Java 中实现多线程一共有四种方式: 继承 Thread 类 实现 Runnable 接口 实现 Callable 接口 线程池 下面我将对这四种方式进行入门级的解析和演示. 一.继承 Thre ...

  5. java创建线程的四种方式

    目录 1.直接初始化Thead类,实现Runnable接口 2.继承Thread类 3.实现callable接口 4.使用线程池创建线程 1.直接初始化Thead类,实现Runnable接口 查看Th ...

  6. java多线程w3c_Java创建多线程的三种方式

    前言 这篇文章主要讲述线程的概念.组成.Java创建多线程的三种方式以及线程的类型. 线程概念 线程和进程的区别 **进程:**正在运行的程序,例如:你打开 的qq音乐.exe程序,其由PCB(进程控 ...

  7. 创建多线程的几种方式

    Java中多线程的创建有几种方式? 答:四种. 创建多线程的四种方式: 继承Thread类,实现Runnable接口,jdk5.0以后又增加了两种方式,实现Callable接口和使用线程池. 方式一: ...

  8. Java 并发 多线程:创建线程的四种方式

    Java 并发 多线程: 创建线程的四种方式 继承 Thread 类并重写 run 方法 实现 Runnable 接口 实现 Callable 接口 使用线程池的方式创建 1. 通过继承 Thread ...

  9. 创建现成的四种方式 多线程与并发的基本概念:

    多线程与并发的基本概念: 多线程 一:什么是线程? 进程:进行中应用程序 线程:是进程组成者,一个进程中可能包含多个线程 cpu执行程序的最小单位是线程,cpu在同一时间内只能执行一个线程,在多个线程 ...

最新文章

  1. ALSM_EXCEL_TO_INTERNAL_TABLE
  2. django 灵活的后台查询
  3. centos6 进入命令行_CentOS 6.x误删libc.so.6,紧急恢复
  4. intellij idea_IntelliJ IDEA内部设计
  5. RabbiqMQ快速入门
  6. c语言中分数的类型,用C语言编程平均分数
  7. Spring中实体类为什么不需要注册成bean?
  8. SQL2008-显示表大小行数
  9. 低版本 android 软件下载,纳米盒旧版本下载-纳米盒旧版下载4.1安卓版-西西软件下载...
  10. 泛型编程和元编程概念(先学泛型编程再学元编程)
  11. gtid_executed和gtid_purged变量是如何初始化的
  12. python生成的词云没有图案_python词云(词云图生成器)
  13. 维护最短路径条数和途径点的权值累加
  14. kera中各种accuracy的介绍
  15. 4k纸是几厘米乘几厘米_4k纸多大(4k纸有几张a4纸大)
  16. 用插件MAVEN-SUREFIRE-REPORT-PLUGIN生成HTML格式测试报告
  17. 后氧传感器正常数据_怎么看氧传感器数据流
  18. element中切换时间日期选择器时下拉框偏移到左上角的问题
  19. 转 Go程序GC优化经验分享
  20. 阿米巴管理 在软件企业中的问题

热门文章

  1. m基于sift特征提取和模板匹配的车标识别算法matlab仿真
  2. 关于winform串口程序(二)数据的发送(modbus协议RTU模式)
  3. 中级职称报名上海计算机考试,关于上海中级职称计算机考试的问题
  4. 弘扬优秀传统2019年航天类EI会议对高职校园2019年航天类EI会议建设的重要意义
  5. 【指针】八进制转换为十进制
  6. python钉钉机器人发图片
  7. 解决C:\WINDOWS\system32\drivers\etc\中没有hosts文件的办法
  8. mx-memonger
  9. malloc()函数实现内存动态分配
  10. Pro JavaScript Techniques (Pro)