java多线程的几种实现方式
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多线程的几种实现方式相关推荐
- Java多线程的4种实现方式
** Java多线程的4种实现方式 ** 1:继承Thread并重写run方法,并调用start方法 /*** Java实现多线程的方式1* 继承Thread类,重写run方法* @author ho ...
- Java多线程的11种创建方式以及纠正网上流传很久的一个谬误
创建线程比较传统的方式是继承Thread类和实现Runnable,也可以用内部类,Lambda表达式,线程池,FutureTask等. 经常面试会问到继承Thread类和实现Runnable的区别,然 ...
- Java多线程的三种实现方式(重点看Collable接口实现方式)
1.通过继承Thread类来实现多线程 在继承Thread类之后,一定要重写类的run方法,在run方法中的就是线程执行体,在run方法中,直接使用this可以获取当前线程,直接调用getName() ...
- Java:简述Java多线程的四种实现方式
关联文章:<Java:简述Java中的多线程编程> Java多线程实现方式主要有四种:继承Thread类.实现Runnable接口.实现Callable接口通过FutureTask包装器来 ...
- java多线程的6种实现方式详解
多线程的形式上实现方式主要有两种,一种是继承Thread类,一种是实现Runnable接口.本质上实现方式都是来实现线程任务,然后启动线程执行线程任务(这里的线程任务实际上就是run方法).这里所说的 ...
- java 多线程的一种实现方式
private ThreadPoolExecutor threadPoolExecutor;/*** 获取线程池* @return*/private ThreadPoolExecutor getThr ...
- java多线程的几种状态
Java线程既可以创建,也可以销毁,所以线程是有生命周期的,而线程的生命周期就可以用线程的六种状态来描述. 从Thread类的源码中可以看出线程一共有6种状态: 这六种状态分别是: 1. New:初始 ...
- Java单例模式的几种实现方式
Java单例模式的几种实现方式 在Java 中,单例类只能有一个实例,必须创建自己的唯一实例,单例类必须给所有其他对象提供这一实例.Java 单例模式有很多种实现方式,在这里给大家介绍单例模式其中的几 ...
- 多线程python实现方式_python多线程的两种实现方式(代码教程)
本篇文章给大家带来的内容是关于python多线程的两种实现方式(代码教程),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 线程是轻量级的进程,进程中可划分出多个线程,线程可独立的调度 ...
最新文章
- 打开完成查看的CAD图纸如何一键进行打印?
- 07-Windows Server 2012 R2 会话远程桌面-标准部署-RD授权
- linux 内核空间与用户空间 简介
- VS Code 1.38 发布!
- 2018软工实践第六次作业-团队选题报告
- Java中数组的打印
- C#中引用第三方ocx控件引发的问题以及解决办法
- 将数据库表中的数据读出以xml的形式下载到手机端
- 范凯:对移动社交型app的一点思考
- UVA 12161 Ironman Race in Treeland (树分治)
- JVM类加载的各阶段过程(加载、验证、准备、解析、初始化)
- [外星与文明]外星人的离开对地球有什么影响?
- socket php建立聊天室,PHP搭建socket聊天室
- womic网络错误_Womic为什么无法用usb连接
- 默孚龙电滑环,360度旋转防止绕线
- fmod使用fader dsp控制音量——不影响频谱采样nice
- 【ACM省赛】第九届河南省程序设计大赛 B 宣传墙
- ASP.NET:aspx文件
- on error resume next用法
- 乌镇大会前两天,互联网大佬演讲干货汇总