多线程的实现方式一般通过3种方式,继承Thread类,实现Runnable接口,实现Callable接口。

1.继承Thread类方式的基础实现:

package com.demo;public class ThreadDemo extends Thread{@Overridepublic void run(){super.run();System.out.println("第一段线程");}public static void main(String[] args) {ThreadDemo threadDemo = new ThreadDemo();threadDemo.start();}
}

样例继承Thread类后重写run()方法,然后再main方法中new一个样例出来,通过执行Thread类自带的start()方法运行后即可实现程序的运行。执行结果可见:

2.实现Runnable接口方式:

package com.demo;public class RunableDemo implements Runnable {@Overridepublic void run(){System.out.println("RUNABLE线程");}public static void main(String[] args) {//runable是个接口,没有start方法去执行,需要借助thread类RunableDemo runableDemo = new RunableDemo();Thread thread = new Thread(runableDemo);thread.start();}
}

这里的Runnable接口不是一个类,没有自带的start()方式,所以在执行时需要借助Thread类,将样例以参数的形式传入来实现执行,thread类自带的tread方法如下:

该方式运行结果:

3.实现Callable接口方式:

package com.demo;import java.util.concurrent.*;public class CablleDemo implements Callable<String> {@Overridepublic String call() throws Exception{System.out.println(Thread.currentThread().getName());Thread.sleep(1000);return "这是callable的返回值";}public static void main(String[] args) throws ExecutionException, InterruptedException {//需要先启动一个线程池,callable也是个接口无法直接使用ExecutorService executorService = Executors.newFixedThreadPool(1);Future<String> future = executorService.submit(new CablleDemo());//future.get()是一个阻塞方法,只有方法中等待时间过后才可进行返回值System.out.println(future.get());}
}

Callable接口是个带返回值的接口,方便我们在执行多个方法后得到我们想要的结果。Callable接口需要通过线程池自带的submit()类来启动,使用future来接收返回值,返回值可以用future.get()来获取,此外future.get()是个阻塞方法,阻塞在call()方法中,添加睡眠时间后,程序只会先输出当前线程,只有时间过后才会得到返回值。
执行程序结果如下:

以上就是3种基本的多线程最简单的实现方式,简单到底了。

java多线程的基本实现方式与示例相关推荐

  1. Java多线程两种实现方式的对比

    Java多线程两种实现方式的对比 一种,直接继承Thread类 一种,实现Thread类的Runnable接口 两种方式的区别 比如,售票厅有四个窗口,可以发售某日某次列出的100张车票,此时,100 ...

  2. 实现java多线程的3种方式,99%人没用过第3种

    实现多线程的3种方式 1.继承Thread类 看jdk源码可以发现,Thread类其实是实现了Runnable接口的一个实例,继承Thread类后需要重写run方法并通过start方法启动线程. 继承 ...

  3. 3种java实现多线程_实现java多线程的3种方式,99%人没用过第3种

    实现多线程的3种方式 1.继承Thread类 看jdk源码可以发现,Thread类其实是实现了Runnable接口的一个实例,继承Thread类后需要重写run方法并通过start方法启动线程. 继承 ...

  4. Java多线程之线程池的使用示例

    2019独角兽企业重金招聘Python工程师标准>>> 第一种:创建一个定长的线程池,控制线程最大并发数,超出的会在队列中等待. TestThreadPool.java import ...

  5. java 多线程同步 通过实现Runnable的示例

    public class SaleTicketThread{public static void main(String[] args) {//创建共享资源对象TicketThread tt = ne ...

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

    基本的线程机制 并发编程时我们可以将程序或分为多个分离的.独立运行的任务.通过多线程机制,这些独立任务中的每一个都由执行线程来驱动. 线程可以驱动任务,因此需要一种描述任务的方式,这可以通过 Runn ...

  7. java实现线程三种方式_详解三种java实现多线程的方式

    java中实现多线程的方法有两种:继承Thread类和实现runnable接口. 1.继承Thread类,重写父类run()方法 public class thread1 extends Thread ...

  8. Java多线程-通讯方式

    Java多线程-通讯方式 线程之间为什么要通信? 通信的目的是为了更好的协作,线程无论是交替式执行,还是接力式执行,都需要进行通信告知.那么java线程是如何通信的呢,大致有以下六种方式. Java线 ...

  9. java多线程下载源码_Java多线程文件分片下载实现的示例代码

    多线程下载介绍 多线程下载技术是很常见的一种下载方案,这种方式充分利用了多线程的优势,在同一时间段内通过多个线程发起下载请求,将需要下载的数据分割成多个部分,每一个线程只负责下载其中一个部分,然后将下 ...

最新文章

  1. PHP解决方案@黑名单过滤
  2. windowsphone开发_[app开发定制公司]开发app需要什么技术呢?
  3. BNF范式(巴科斯范式)简介
  4. 为什么说红外热成像测温设备是2020年最火的弱电设备?
  5. jQuery选中该复选框来实现/全部取消/未选定/获得的选定值
  6. Coil - Google推荐的协程图片加载库
  7. OJ1067: 有问题的里程表(C语言)
  8. vue限制点击次数_vue点击切换颜色限制个数(用了mui框架)
  9. C++ Primer 第十三章 拷贝控制
  10. 计算机图形学完整笔记(二):光栅图形学算法
  11. 一键hosts修改工具 全百科Hosts修改器
  12. lfw人脸识别数据集
  13. jsp数据库中文乱码处理
  14. libreelec投屏_在LibreELEC上安装Entware
  15. matlab求函数偏导
  16. 非常有意思的Flowlet
  17. 网游线上活动的类型及特点
  18. 华为交换机配置syslog发送_华为交换机的 syslog功能
  19. Winograd 卷积计算
  20. 基于QPSK的载波同步和定时同步性能仿真,包括Costas环的gardner环

热门文章

  1. power bi 背景图_Power BI桌面脉冲图
  2. c#代码如何连数据库快照_5127数据库快照错误代码的含义
  3. linux 配置 tmux
  4. 8种提升ASP.NET Web API性能的方法
  5. Java Persistence with MyBatis 3(中国版)
  6. The Nighth Assignment
  7. 数据结构与算法分析-用C语言实现栈(数组方式)
  8. 解决 网上下载的例子 My Mac 64-bit 不能运行的问题
  9. 关于IE透明度失效的问题
  10. 报表FineReport部署Tomcat服务器