java 创建线程_java多线程|创建线程的各种方式
javaDEMO
本网站记录了最全的各种JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring的, Mybatis的等等各种,助力你从菜鸟到大牛,记得收藏哦~~https://www.javastudy.cloud
创建线程
继承Thread类
/**
* @Author https://www.javastudy.cloud
* @CreateTime 2019/11/01
**/
public class ThreadStudy extends Thread{
/**
* 继承Thread类并且重写run方法,
* 这个方法并不常用,因为一个java类只能继承一个类
*/
@Override
public void run() {
System.out.println("run in sub Thread , Thread name is "+ Thread.currentThread().getName());
}
public static void main(String[] args) {
System.out.println("run in main Thead , Thread name is "+ Thread.currentThread().getName());
ThreadStudy study = new ThreadStudy();
//注意启动线程要用 start()方法
study.start();
try {
//让主线程休眠两秒,让子线程有足够的时间运行
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
运行结果:
实现Runnable接口
这种让一个类直接实现Runnable接口显得有些笨重实际开发中,经常会用下面匿名类的方式创建线程
/**
* @Author https://www.javastudy.cloud
* @CreateTime 2019/11/01
**/
public class ThreadStudy implements Runnable{
/**
* 实现Runnable接口,
* 这个是常用的方法,因为一个java类可以实现多个接口
*/
@Override
public void run() {
System.out.println("run in sub Thread , Thread name is "+ Thread.currentThread().getName());
}
public static void main(String[] args) {
System.out.println("run in main Thead , Thread name is "+ Thread.currentThread().getName());
//要先new 一个Thread
// 然后把实现Runnable接口的类传入到Thread的构造函数中
ThreadStudy study = new ThreadStudy();
Thread thread = new Thread(study);
//注意启动线程要用 start()方法
thread.start();
try {
//让主线程休眠两秒,让子线程有足够的时间运行
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
使用匿名类来创建线程,这里使用了lambda的写法,也是实际开发中常用的写法
/** * @Author https://www.javastudy.cloud * @CreateTime 2019/11/01 **/public class ThreadStudy { public static void main(String[] args) {System.out.println("run in main Thread , Thread name is "+ Thread.currentThread().getName());// 不用类实现Runnable接口了, 直接这样定义,方便,省事 Runnable runnable = ()-> System.out.println("run in sub Thread, Thread name is "+Thread.currentThread().getName());// 启动这个线程还是要用Thread来包装下,然后调用Thread.start()方法 Thread thread = new Thread(runnable); thread.start();try {//让主线程休眠两秒,让子线程有足够的时间运行Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } }}
使用线程池
/** * @Author https://www.javastudy.cloud * @CreateTime 2019/11/01 **/public class ThreadStudy { public static void main(String[] args) {System.out.println("Run in main Thread, Thread name is "+ Thread.currentThread().getName());//一句话就可以创建一个线程池下面这种写法线程没有上限,实际开发中不太推荐// 开发中一般是用下行注释的方法,或者自定义线程池参数// 常用的还有 Executors.newFixedThreadPool(10);去创建固定10个线程的池子,这个也有弊端,就是等待的队列没有上界// ExecutorService service = Executors.newCachedThreadPool();// 没有返回值的处理 service.submit(()-> System.out.println("Run in sub Thread, Thread name is "+Thread.currentThread().getName()));// 有返回值的处理,用一个Future 去接收 Future submit = service.submit(() -> "Run in sub Thread with return , Thread name is " + Thread.currentThread().getName());//输出future里面的值try {System.out.println(submit.get()); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } }}
运行结果:
DEMO总评
我们在很多场景下都会用到另开一个线程去处理任务,如不需要返回值的, 如耗时比较长的等等,那么就要熟练掌握创建线程的方法,希望大家能掌握常用的创建线程方法,让程序撑得起高并发! 少年,加油吧!!
往期热文面试 linux基础知识点总结java集合|遍历HashMap的四种方法mybatis面试点|#和$的区别点在看的都没有bug!!!
java 创建线程_java多线程|创建线程的各种方式相关推荐
- java runnable 启动_Java多线程:线程的创建与启动
# 面试题: Java中创建线程有几种方式. 不同的创建方式有什么区别. 如何启动一个线程. # Java中创建线程的方式 JDK源码中的描述:两种 image.png 第一种是继承Thread类,重 ...
- java闭合数据_java多线程中线程封闭详解
线程封闭的概念 访问共享变量时,通常要使用同步,所以避免使用同步的方法就是减少共享数据的使用,这种技术就是线程封闭. 实现线程封闭的方法 1:ad-hoc线程封闭 这是完全靠实现者控制的线程封闭,他的 ...
- java 生产者消费者_Java多线程:线程间通信—生产者消费者模型
一.背景 && 定义 多线程环境下,只要有并发问题,就要保证数据的安全性,一般指的是通过 synchronized 来进行同步. 另一个问题是, 多个线程之间如何协作呢 ? 我们看一个 ...
- java终端线程_java多线程-中断线程
大纲: java线程的中断原则 中断相关方法 中断实例 一.java线程中断原则 java中断是一种协作机制,每一个线程的中断都由线程自己处理,其他线程只是给要中断的线程一个中断标志. 二.相关方法 ...
- 金九银十:线程、多线程,线程池面试题十连问!
点击上方关注 "终端研发部" 设为"星标",和你一起掌握更多数据库知识 大家好我是小于哥啊,最近的面试中,关于线程.多线程,线程池相关的面试题还是挺多的.今天我 ...
- delphiXE关于线程和多线程、线程的同步与异步执行
delphiXE关于线程和多线程.线程的同步与异步执行 一.最好的参照案例 {$BDS}\source\fmx\FMX.Helpers.Android.pas 如下四个独立方法: type TMe ...
- java中怎样创建线程_java中的线程创建和使用
Java中实现多线程有两种途径:继承Thread类或者实现Runnable接口.Runnable是接口,建议用接口的方式生成线程,因为接口可以实现多继承,况且Runnable只有一个run方法,很适合 ...
- java进程与线程_Java多线程笔记(零):进程、线程与通用概念
前言 不积跬步,无以至千里:不积小流,无以成江海.在学习Java多线程相关的知识前,我们首先需要去了解一点操作系统的进程.线程以及相关的基础概念. 进程 通常,我们把一个程序的执行称为一个进程.反过来 ...
- java多线程优先级的方法_Java多线程以及线程优先级
文章目录 1 继承Thread类多线程的实现获取和设置线程名称线程优先级 2 实现Runnable接口3 实现Callable接口4 使用线程池 1 继承Thread类 多线程的实现 实现多线程只需要 ...
最新文章
- Android 抓包的一些命令 及 adb使用的一些注意事项
- 2019年我建议你做好三件事情
- windows进程通信 -- WM_COPYDATA消息
- 【Qt】数据库实战之QSqlQueryModel
- WordPress主题LensNews模板源码,2.2版本多功能新闻积分商城主题
- ajax 文件上传,ajax
- python购物车代码_python简单商城购物车实例代码
- qchart 怎么点击一下 出一条线_疏通身上一条线,很多难缠病,不知不觉消失了!...
- 信息系统安全等级保护基本要求_继电保护对电力系统安全运行至关重要,电网对它的基本要求有哪些...
- zoj2901【DP·二进制优化】
- amazon - FileZilla 连接 amazon云服务器
- 奇点云行业观察 | 购物中心如何实现高质量数据采集?
- source tree ui操作对应的git命令
- 【web渗透思路】敏感信息泄露(网站+用户+服务器)
- ios键盘横屏_iOS 强制横屏、部分横屏等功能实践
- am335x硬件定时器使用
- Java常见运算符整理
- ubuntu qt平台搭建openssl开发环境
- HarmonyOS实战—可编辑的卡片交互
- 使用pyspark 的udf进行tensorflow 模型的预测报错 _pickle.PicklingError: Could not serialize object:
热门文章
- 2011东北地区赛G题(二分-网络流判可行性)
- jquery验证表单很简单的方法
- 在ASP.NET 中实现单用户登录(利用Cache, 将用户信息保存在服务器缓存中)[转]
- 二叉树——淘汰赛(洛谷 P4715)
- 排序——分数线划定(洛谷 P1068)
- axure日期选择器组件_vue干货分享,超过六种组件通信方法讲解和精髓归纳
- git 忽略__pycache___图解git,用手绘图带你理解git中分支的原理和应用
- 2019年开源数据库报告发布:MySQL仍卫冕!
- 案例分析:程序媛记一次特殊的“故障”处理
- MySQL SQL优化之覆盖索引