什么是线程

简介: 什么是线程

线程是进程内独立运行的一个单位,而进程他可以由一个或者多个线程组成,但是一个线程只能对应一个进程。

如何创建线程

创建线程有继承Thread类、实现Runnable接口或者通过Callable和Future创建线程三种方法,具体创建过程如下。 本文来源于公众号:【Java学习提升】 专注于Java领域技术分享,Java知识体系学习、分享面试经验,让我们结伴而行,共同成长!

1、继承Thread类

下面我们通过代码来看下继承Thread类创建线程的具体步骤:

首先我们需要定义一个类来集成Thread类,继承过后需要重写Thread类的run()方法,代码如下:

然后我们调用该线程类对象的start()方法来启动线程,代码如下:

运行结果如下:

2、实现Runnable接口

我们还可以通过实现Runnable接口来创建线程类,具体如下:

首先我们需要创建一个类来实现Runnable接口,同样我们也需要重写run()方法

然后我们创建Runnable实现类的对象,把这个实现类的对象作为Thread类的target对象来创建线程,最后得到的Thread类的对象才是真正的线程对象,运行start()方法来启动线程

结果如下:

3、通过Callable和Future创建线程

首先创建一个类实现Callable接口,并且重写call()方法

然后使用FutureTask来包装MyCallable对象,同样和上面一样把FutureTask类的对象作为Thread类的target对象来创建线程并用start()方法来启动。

通过上面的例子我们发现,已经不是重写run()方法而是重写call()方法,并且还能自定义返回值,另外还有一个值得注意的问题是FutureTask实际上是实现了Runnable类并且也继承了Future接口,很显然FutureTask具有这两者的双重特征。

相关文章
uniapp项目实践第四章:如何安装uni-ui组件库
uniapp项目实践第四章:如何安装uni-ui组件库
996 0
|
10月前
|
人工智能 自然语言处理 网络安全
基于阿里云 Milvus + DeepSeek + PAI LangStudio 的低成本高精度 RAG 实战
阿里云向量检索服务Milvus版是一款全托管向量检索引擎,并确保与开源Milvus的完全兼容性,支持无缝迁移。它在开源版本的基础上增强了可扩展性,能提供大规模AI向量数据的相似性检索服务。凭借其开箱即用的特性、灵活的扩展能力和全链路监控告警,Milvus云服务成为多样化AI应用场景的理想选择,包括多模态搜索、检索增强生成(RAG)、搜索推荐、内容风险识别等。您还可以利用开源的Attu工具进行可视化操作,进一步促进应用的快速开发和部署。
|
搜索推荐 JavaScript Go
小爱音箱改造篇(一)- 创意萌芽
小爱音箱改造篇(一)- 创意萌芽
324 2
|
存储 开发者 Python
【阿里云镜像】配置阿里巴巴开源镜像站镜像——PyPI 镜像
【阿里云镜像】配置阿里巴巴开源镜像站镜像——PyPI 镜像
5846 0
【阿里云镜像】配置阿里巴巴开源镜像站镜像——PyPI 镜像
|
Java Spring
Java 项目工程搭建 --创建子模块(Spring Initializr)
Java 项目工程搭建 --创建子模块(Spring Initializr)
530 3
|
移动开发 前端开发 JavaScript
关于LLC知识1
LLC高效的原因
|
NoSQL 安全 Java
面试官:分布式锁最终解决方案是RedLock吗?为什么?
面试官:分布式锁最终解决方案是RedLock吗?为什么?
393 1
|
存储 XML 数据格式
流程建模艺术:使用Activiti设计流程
流程建模艺术:使用Activiti设计流程
296 0
|
机器学习/深度学习 敏捷开发 人工智能
探索软件测试的演变之路
【8月更文挑战第22天】本文将带您穿越时空,从软件测试的起源谈起,直至今日的自动化与智能化趋势。我们将一探究竟,看测试如何从简单的错误检查发展到复杂的质量保证体系,以及这一路走来对软件开发流程产生的深远影响。文章不仅回顾历史,更展望未来,思考在人工智能浪潮下,软件测试将如何进化。