java多线程的基本实现方式与示例
多线程的实现方式一般通过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多线程的基本实现方式与示例相关推荐
- Java多线程两种实现方式的对比
Java多线程两种实现方式的对比 一种,直接继承Thread类 一种,实现Thread类的Runnable接口 两种方式的区别 比如,售票厅有四个窗口,可以发售某日某次列出的100张车票,此时,100 ...
- 实现java多线程的3种方式,99%人没用过第3种
实现多线程的3种方式 1.继承Thread类 看jdk源码可以发现,Thread类其实是实现了Runnable接口的一个实例,继承Thread类后需要重写run方法并通过start方法启动线程. 继承 ...
- 3种java实现多线程_实现java多线程的3种方式,99%人没用过第3种
实现多线程的3种方式 1.继承Thread类 看jdk源码可以发现,Thread类其实是实现了Runnable接口的一个实例,继承Thread类后需要重写run方法并通过start方法启动线程. 继承 ...
- Java多线程之线程池的使用示例
2019独角兽企业重金招聘Python工程师标准>>> 第一种:创建一个定长的线程池,控制线程最大并发数,超出的会在队列中等待. TestThreadPool.java import ...
- java 多线程同步 通过实现Runnable的示例
public class SaleTicketThread{public static void main(String[] args) {//创建共享资源对象TicketThread tt = ne ...
- java多线程实现的几种方式
基本的线程机制 并发编程时我们可以将程序或分为多个分离的.独立运行的任务.通过多线程机制,这些独立任务中的每一个都由执行线程来驱动. 线程可以驱动任务,因此需要一种描述任务的方式,这可以通过 Runn ...
- java实现线程三种方式_详解三种java实现多线程的方式
java中实现多线程的方法有两种:继承Thread类和实现runnable接口. 1.继承Thread类,重写父类run()方法 public class thread1 extends Thread ...
- Java多线程-通讯方式
Java多线程-通讯方式 线程之间为什么要通信? 通信的目的是为了更好的协作,线程无论是交替式执行,还是接力式执行,都需要进行通信告知.那么java线程是如何通信的呢,大致有以下六种方式. Java线 ...
- java多线程下载源码_Java多线程文件分片下载实现的示例代码
多线程下载介绍 多线程下载技术是很常见的一种下载方案,这种方式充分利用了多线程的优势,在同一时间段内通过多个线程发起下载请求,将需要下载的数据分割成多个部分,每一个线程只负责下载其中一个部分,然后将下 ...
最新文章
- PHP解决方案@黑名单过滤
- windowsphone开发_[app开发定制公司]开发app需要什么技术呢?
- BNF范式(巴科斯范式)简介
- 为什么说红外热成像测温设备是2020年最火的弱电设备?
- jQuery选中该复选框来实现/全部取消/未选定/获得的选定值
- Coil - Google推荐的协程图片加载库
- OJ1067: 有问题的里程表(C语言)
- vue限制点击次数_vue点击切换颜色限制个数(用了mui框架)
- C++ Primer 第十三章 拷贝控制
- 计算机图形学完整笔记(二):光栅图形学算法
- 一键hosts修改工具 全百科Hosts修改器
- lfw人脸识别数据集
- jsp数据库中文乱码处理
- libreelec投屏_在LibreELEC上安装Entware
- matlab求函数偏导
- 非常有意思的Flowlet
- 网游线上活动的类型及特点
- 华为交换机配置syslog发送_华为交换机的 syslog功能
- Winograd 卷积计算
- 基于QPSK的载波同步和定时同步性能仿真,包括Costas环的gardner环