1.继承Thread类,重写run方法

Thread类本质上是实现了Runnable接口的一个实例。因此,启动线程的唯一方式就是通过Thread类的start()方法,start()方法是个native方法,它会启动一个新的线程,并执行run()方法。

/*** Create By CodeCow on 2020/8/3.*/
public class TestThread {public static void main(String[] args) {MyThread mt = new MyThread("新线程————看大片");//开启新线程mt.start();//在主方法中执行for循环for (int i = 0; i < 5; i++) {System.out.println("main线程————撸代码,没意思。。" + i);}}//继承Thread类public static class MyThread extends Thread {//定义指定线程名称的构造方法public MyThread(String name) {//调用父类的String参数的构造方法,指定线程的名称(原理:利用继承特点,将线程名称传递)super(name);}//重写run方法,定义线程要执行的代码@Overridepublic void run() {for (int j = 0; j < 5; j++) {//getName()方法 来自父亲(就是Thread类中,获取当前线程名称方法)System.out.println(getName() + " :好刺激哟,不行了,快、快。。" + j);}}}
}

2.实现Runnable接口,重写run方法

Runnable接口从“Java1.0”就已经有了,它内部只有一个抽象方法run()。因此:要启动线程就要实现Runnable接口并重写它的run()方法。

注意:由于Java不支持多继承,如果自己的类已经继承了其他类,要启动线程就要实现Runnable接口并重写它的run()方法

/*** Create By CodeCow on 2020/8/3.*/
public class TestRunnable implements Runnable{//重写run()方法, 写自己需要的代码@Overridepublic void run() {for (int i = 0; i < 5; i++) {//currentThread() 返回对当前正在执行的线程对象的引用System.out.println(Thread.currentThread().getName()+" :好刺激哟,不行了,快、快。。" + i);}}public static void main(String[] args) {//创建自定义类对象 线程任务对象TestRunnable mr = new TestRunnable();//创建线程对象Thread t = new Thread(mr, "新线程————看大片(正经人别多想)");t.start();for (int i = 0; i < 5; i++) {System.out.println("main线程————撸代码,没意思。。" + i);}}
}

3.实现Callable接口

Runnable是执行工作的独立任务,但是不返回任何值。如果我们希望任务完成之后有返回值,可以实现Callable接口

/*** Create By CodeCow on 2020/8/3.*/
@Slf4j
public class TestCallable implements Callable<String> {public static void main(String[] args) throws ExecutionException, InterruptedException {ExecutorService executorService = Executors.newCachedThreadPool();TestCallable testCallable = new TestCallable();Future<String> future = executorService.submit(testCallable);log.info("future: " + future.get()); //get会阻塞executorService.shutdown();}@Overridepublic String call() throws Exception {return "带含有返回值的线程";}
}

4.通过线程池创建线程

创建线程的方式就是继承Thread,线程池也不例外,创建好的线程对象来执行任务

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

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

    ** Java多线程的4种实现方式 ** 1:继承Thread并重写run方法,并调用start方法 /*** Java实现多线程的方式1* 继承Thread类,重写run方法* @author ho ...

  2. Java多线程的11种创建方式以及纠正网上流传很久的一个谬误

    创建线程比较传统的方式是继承Thread类和实现Runnable,也可以用内部类,Lambda表达式,线程池,FutureTask等. 经常面试会问到继承Thread类和实现Runnable的区别,然 ...

  3. Java多线程的三种实现方式(重点看Collable接口实现方式)

    1.通过继承Thread类来实现多线程 在继承Thread类之后,一定要重写类的run方法,在run方法中的就是线程执行体,在run方法中,直接使用this可以获取当前线程,直接调用getName() ...

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

    关联文章:<Java:简述Java中的多线程编程> Java多线程实现方式主要有四种:继承Thread类.实现Runnable接口.实现Callable接口通过FutureTask包装器来 ...

  5. java多线程的6种实现方式详解

    多线程的形式上实现方式主要有两种,一种是继承Thread类,一种是实现Runnable接口.本质上实现方式都是来实现线程任务,然后启动线程执行线程任务(这里的线程任务实际上就是run方法).这里所说的 ...

  6. java 多线程的一种实现方式

    private ThreadPoolExecutor threadPoolExecutor;/*** 获取线程池* @return*/private ThreadPoolExecutor getThr ...

  7. java多线程的几种状态

    Java线程既可以创建,也可以销毁,所以线程是有生命周期的,而线程的生命周期就可以用线程的六种状态来描述. 从Thread类的源码中可以看出线程一共有6种状态: 这六种状态分别是: 1. New:初始 ...

  8. Java单例模式的几种实现方式

    Java单例模式的几种实现方式 在Java 中,单例类只能有一个实例,必须创建自己的唯一实例,单例类必须给所有其他对象提供这一实例.Java 单例模式有很多种实现方式,在这里给大家介绍单例模式其中的几 ...

  9. 多线程python实现方式_python多线程的两种实现方式(代码教程)

    本篇文章给大家带来的内容是关于python多线程的两种实现方式(代码教程),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 线程是轻量级的进程,进程中可划分出多个线程,线程可独立的调度 ...

最新文章

  1. 打开完成查看的CAD图纸如何一键进行打印?
  2. 07-Windows Server 2012 R2 会话远程桌面-标准部署-RD授权
  3. linux 内核空间与用户空间 简介
  4. VS Code 1.38 发布!
  5. 2018软工实践第六次作业-团队选题报告
  6. Java中数组的打印
  7. C#中引用第三方ocx控件引发的问题以及解决办法
  8. 将数据库表中的数据读出以xml的形式下载到手机端
  9. 范凯:对移动社交型app的一点思考
  10. UVA 12161 Ironman Race in Treeland (树分治)
  11. JVM类加载的各阶段过程(加载、验证、准备、解析、初始化)
  12. [外星与文明]外星人的离开对地球有什么影响?
  13. socket php建立聊天室,PHP搭建socket聊天室
  14. womic网络错误_Womic为什么无法用usb连接
  15. 默孚龙电滑环,360度旋转防止绕线
  16. fmod使用fader dsp控制音量——不影响频谱采样nice
  17. 【ACM省赛】第九届河南省程序设计大赛 B 宣传墙
  18. ASP.NET:aspx文件
  19. on error resume next用法
  20. 乌镇大会前两天,互联网大佬演讲干货汇总

热门文章

  1. 人生不能错过的五句话
  2. 微信不支持APP文件直接下载的解决办法
  3. xp如何查看计算机配置文件,Windows XP如何修改用户配置文件默认位置
  4. C#创建Windows窗体应用程序实例4【大学选课】
  5. 自动拨号程序调试过程
  6. pop客户机程序流程图_labview问题集锦
  7. 【笔记】openwrt - busybox
  8. IBM power小型机更换硬盘步骤
  9. 小公司的大企业病,一定要根治
  10. linux转换flv文件格式,安装和使用ffmpeg转换视频为flv文件(windows和linux)