多线程的几种实现方式

多线程的几种实现方式上篇文章总结了下关于线程池很干 很干的干货 这次想着顺便连其他实现多线程的三种方式也汇总下吧 java 多线程的几种实现方式 1 继承 Thread 类 重写 run 方法 2 实现 Runnable 接口 重写 run 方法 实现 Runnable 接口的实现类的实例对象作为 Thread 构造函数的 target3 通过 Callable 和 FutureTask 创建线程 4 通过线程池创建线程 上一篇已经讲过了

上篇文章总结了下关于线程池很干,很干的干货,这次想着顺便连其他实现多线程的三种方式也汇总下吧!

java多线程的几种实现方式:

1.继承Thread类,重写run方法
2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target
3.通过Callable和FutureTask创建线程
4.通过线程池创建线程  (上一篇已经讲过了)






方式1:继承Thread类的线程实现方式如下:

public class ThreadDemo01 extends Thread{     public ThreadDemo01(){         //编写子类的构造方法,可缺省     }     public void run(){         //编写自己的线程代码         System.out.println(Thread.currentThread().getName());     }     public static void main(String[] args){          ThreadDemo01 threadDemo01 = new ThreadDemo01();          threadDemo01.setName("我是自定义的线程1");         threadDemo01.start();                System.out.println(Thread.currentThread().toString());       } }

线程实现方式2:通过实现Runnable接口,实现run方法,接口的实现类的实例作为Thread的target作为参数传入带参的Thread构造函数,通过调用start()方法启动线程

public class ThreadDemo02 {     public static void main(String[] args){          System.out.println(Thread.currentThread().getName());         Thread t1 = new Thread(new MyThread());         t1.start();      } } class MyThread implements Runnable{     @Override     public void run() {         // TODO Auto-generated method stub         System.out.println(Thread.currentThread().getName()+"-->我是通过实现接口的线程实现方式!");     }    }
public class ThreadDemo03 {     /      * @param args      */     public static void main(String[] args) {         // TODO Auto-generated method stub         Callable  oneCallable = new Tickets  ();         FutureTask  oneTask = new FutureTask  (oneCallable);         Thread t = new Thread(oneTask);         System.out.println(Thread.currentThread().getName());         t.start();     } } class Tickets  implements Callable  {     //重写call方法     @Override     public Object call() throws Exception {         // TODO Auto-generated method stub         System.out.println(Thread.currentThread().getName()+"-->我是通过实现Callable接口通过FutureTask包装器来实现的线程");         return null;     }    }      

线程实现方式4:通过线程池创建线程

public class ThreadDemo05{     private static int POOL_NUM = 10;     //线程池数量     /      * @param args      * @throws InterruptedException       */     public static void main(String[] args) throws InterruptedException {         // TODO Auto-generated method stub         ExecutorService executorService = Executors.newFixedThreadPool(5);           for(int i = 0; i 
  

执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了。get方法是阻塞的,即:线程无返回结果,get方法会一直等待。

再介绍Executors类:提供了一系列工厂方法用于创建线程池,返回的线程池都实现了ExecutorService接口。

总结:

引用阿里的关于  线程的建议:

多线程的几种实现方式

多线程的几种实现方式

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/209702.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午8:36
下一篇 2026年3月19日 上午8:37


相关推荐

  • 软件测试基础知识整理(详细版)

    软件测试基础知识整理(详细版)一 软件测试概述 1 软件缺陷软件缺陷 又称之为 Bug 即计算机软件或程序中存在的某种破坏正常运行能力的问题 错误 或者隐藏的功能缺陷 缺陷的表现形式 软件没有实现产品规格说明书所要求的功能模块 软件中出现了产品规格说明指明不应该出现的错误 软件实现了产品规格说明中没有提到的功能需求 软件没有实现虽然产品规格说明没有明确提及但应该实现的目标 软件难以理解 不易使用 运行缓慢 用户体验不友好 产生软件缺陷的原因 需求不清晰 系统结构较为复杂 对程序逻辑路径或者数据范围考虑不全面

    2026年3月18日
    2
  • 区块链技术用解决拜占庭将军问题_区块链中的拜占庭将军问题解析

    区块链技术用解决拜占庭将军问题_区块链中的拜占庭将军问题解析今天我们要讲的内容是 什么是拜占庭将军问题 我们在之前讲过 分布式账本可以说是区块链的框架 每一个人都可以自由地参与进来 共同处理区块链中的数据 基于这一点 区块链实际上就是一个大的分布式计算网络 它并没有一个类似中央指挥室的东西来发号施令 整个网络是完全分散的 要依靠不同的节点间 彼此交换信息 达成共识 才能统一行动 整个过程就像无领导小组讨论一样 对此 有人就提出了疑问 万一有节点发送了错

    2026年3月8日
    2
  • editplus 注册码激活

    editplus 注册码激活喜欢 editplus 的同学 可以用下面激活码激活 用户名 Vovan 密码 3AG46 JJ48E CEACC 8E6EW ECUAW nbsp 转载参考网址 https blog csdn net Jhon1994 article details

    2026年3月18日
    2
  • vue中上传文件_vue下载文件乱码

    vue中上传文件_vue下载文件乱码vue文件上传下载报文件损坏

    2022年8月15日
    8
  • FGC频繁

    FGC频繁1、假如FGC次数增加,达到一小时一次,但是gc之后,内存也立马降下来了;这说明并没有发生内存泄露;只是新生代的对象过早的进入的老年代;解决办法有增加年轻代空间,以减少youngGc,这样就不会有对象过早的进入老年代 增加年轻代进入老年代的年代阀值,可以增加到最大的15次…

    2022年6月19日
    40
  • 理解eth-trunk链路聚合以及配置Eth-Trunk链路聚合

    理解eth-trunk链路聚合以及配置Eth-Trunk链路聚合配置 eth trunk 链路聚合原理概念 优势 1 负载分担 2 提高可靠性 3 增加带宽 实验目的 1 理解使用 eth trunk 的应用场景 2 掌握配置 eth trunk 链路聚合的方法 3 掌握配置 eth trunk 链路聚合的方法 实验内容 实验拓扑 配置 eth trunk 链路聚合的拓扑如图实验步骤 使用 ping 命令检测各 PC 之间的连通性 结果显示两台

    2026年3月18日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号