Java中的线程(创建多线程的三种方法)

Java中的线程——创建

  • 创建多线程
    • 方式一:继承Thread类
    • 方式二:实现Runnable接口
    • 方式三:实现Callable接口
  • 线程的常用API

创建多线程

方式一:继承Thread类

  • 定义一个子类MyThread继承线程类java.lang.Thread,重写run方法
  • 创建MyThread类的对象
  • 调用线程对象的start()方法启动线程(启动后还是执行run方法)
    在这里插入图片描述

优缺点:

  • 优点:编码简单
  • 确定:线程类已经继承Thread,无法继承其他类,不利于功能的扩展

多线程的注意事项:

  1. 启动线程必须调用start方法,不是调用run方法;
  2. 不要把主线程任务放在启动子线程之前

方式二:实现Runnable接口

  • 定义一个线程任务类MyRunnable实现Runnable接口,重写run方法
  • 创建MyRunnable任务对象
  • 把MyRunnable任务对象交给Thread处理
    在这里插入图片描述
  • 调用线程对象的start()方法启动线程
    在这里插入图片描述
    优缺点:
  • 优点:任务类只是实现接口,可以继续继承其他类、实现其他接口,扩展性强
  • 确定:需要多一个Runnable对象

另一种写法:匿名内部类写法

  1. 可以创建Runnable的匿名内部类对象
  2. 再交给Thread线程对象
  3. 再调用线程对象start启动线程

在这里插入图片描述
匿名内部类的简化方法
在这里插入图片描述

方式三:实现Callable接口

如果线程执行完毕后有一些数据需要返回,他们重写的run方法均不能直接返回结果。
解决方法:

  • JDK 5 提供了Callable接口和FutureTask类来实现(多线程的第三种创建方式)
  • 最大优点:可以返回线程执行完毕后的结果
  1. 创建任务对象:
    (定义一个类实现Callable接口,重写call方法,封装要做的事情,和要返回的数据)
    (把Callable类型的对象封装成FutureTask(线程任务对象))
  2. 把线程任务对象交给Thread对象
  3. 调用Thread对象的start方法启动线程
  4. 线程执行完毕后,通过FutureTask对象的get方法获取线程任务执行的结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

线程的常用API

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/690521.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

板块一 Servlet编程:第三节 HttpServletRequest对象全解与请求转发 来自【汤米尼克的JAVAEE全套教程专栏】

板块一 Servlet编程:第三节 HttpServletRequest对象全解与请求转发 一、什么是HttpServletRequest二、接收请求的常用方法三、请求乱码问题四、请求转发:forward五、Request作用域getParameter和getAttribute的区别 在上一节中我们已经学习了完整的Servl…

政安晨:【完全零基础】认知人工智能(一)【超级简单】的【机器学习神经网络】 —— 预测机

开个头 很多小伙伴们很想亲近人工智能与机器学习领域,然而这个领域里的核心理论、算法、工具给人感觉都太过“高冷”,让很多小伙伴们望而却步,导致一直无法入门。 如何捅破这层窗户纸? 让高冷的不再高冷,让神秘的不…

当excel中表格打印预览右边超出限定页面时,调整列宽

解决办法:调整整体列或者部分列的列宽 操作流程如下: 第一步:选中需要调整的列 ①将鼠标放在表格的列上,等出现向下粗箭头后——>②单击(变成粗十字)该列——>③拖动选中列 第二步:调…

30分钟快速上手LaTex

文章目录 30 分钟快速上手 LATEX1.什么是LATEX?2.为什么学习LATEX?3.编写第一个LATEX程序4.LATEX文档的序言5.LATEX文档的标题、作者和日期信息6.LATEX文档的注释7.LATEX文档的粗体、斜体和下划线8.LATEX文档中添加图片9.LATEX中对图像进行标注、标签化和引用10.在LATEX中创建…

Django后端开发——ORM

文章目录 参考资料ORM-基础字段及选项字段类型练习——添加模型类应用bookstore下的models.py数据库迁移——同步至mysqlmysql中查看效果 字段选项Meta类定义示例:改表名应用bookstore下的models.py终端效果 练习——改表名字段选项修改应用bookstore下的models.py终…

vue3+ts项目搭建

⛰️个人主页: 蒾酒 🔥系列专栏:《vue3实战》 🌊山高路远,行路漫漫,终有归途。 目录 前置条件 基础工程模板搭建 测试环境变量是否配置成功 初始化vue项目 安装常用依赖 基础项目目录介绍 前置条件 请确…

星纪魅族宣布 All in AI;欧盟将首次对苹果处以罚款丨 RTE 开发者日报 Vol.146

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

每天分享一个好用的Python库-Colorama

每天分享一个好用的Python库-Colorama 前言 今天分享的是一个主要用来给文本添加各种颜色的库:colorama。 colorama 简介 colorama是一个可以跨多终端显示不同颜色字符与背景的第三方库。 安装 使用pip进行安装 $ pip install colorama简单使用 常用参数 字…

C语言中关于#include的一些小知识

写代码的过程中,因为手误,重复包含了头文件 可以看到没有报错 如果是你自己编写的头文件,那么如果没加唯一包含标识的话,那么编译器会编译报错的。如果是系统自带的头文件,由于其每个头文件都加了特殊标识&#xff0c…

文件上传漏洞--Upload-labs--Pass05--大小写绕过

一、什么是大小写绕过 我们想要上传含有恶意代码的 .php 文件,但 .php 后缀名的文件可能会被 白名单 或 黑名单拦截,从而上传失败,在某些源代码中,没有对文件的后缀用 strtolower()函数 统一进行小写化,这就会存在大小…

CAN收发器芯片PCA82C250 TXD RXD引脚方向说明

PCA82C250 收发器芯片TXD RXD和以往TTL的USART接口上TXD RXD方向和定义不同。不可直接连接TTL USART引脚,应该要连接CAN专用的TXD RXD引脚。 并且TXD RXD引脚有方向。其中TXD引脚是输入! RXD引脚是输出! 即TXD RXD引脚的方向 不是相对以本体…

第13章 基于Java Swing的图书管理系统

13.1 需求分析 在当今社会,随着信息技术的不断发展,信息管理系统已经进入到了人类社会的各个领域,人们对于信息技术的掌握也越来越迅速。在图书管理的过程中也引入图书管理体系,图书管理系统将大大节省人力、物力、时间、金钱等资…

ART-Pi LoRa开发套件 不完全教程

1 前言 ART-Pi LoRa 开发套件(LSD4RFB-2EVKM0201)是利尔达科技与睿赛德科技联合出品的一套面向物联网开发者的 LoRa 产品原型设计工具包,搭配ART-Pi主板使用,支持利尔达全系 LoRa 节点与网关模块,拥有丰富的可选配件,用户 可按需…

C++6.0

思维导图 .编程题: 以下是一个简单的比喻,将多态概念与生活中的实际情况相联系:比喻:动物园的讲解员和动物表演 想象一下你去了一家动物园,看到了许多不同种类的动物,如狮子、大象、猴子等。现在&#xff0…

【深入理解设计模式】单例设计模式

单例设计模式 概念: 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。 单例设计模式是一种创建型设计模式,其主要目的是确保类在应用程序中的一个实例只有一个。这意味着无论在应用程序的哪个位置请求该类的实例&a…

IO 作业 24/2/19

1> 使用fread和fwrite完成两个文件的拷贝 #include <myhead.h> int main(int argc, const char *argv[]) {//定义被复制文件指针FILE *fp1NULL;if((fp1fopen("./111.bmp","r"))NULL){perror("error open");return -1;}//定义目标文件指…

Elasticsearch 与 OpenSearch:开源搜索技术的演进与选择

在2010年以Apache 2.0开源协议发布后&#xff0c;Elasticsearch迅速成为全球最受欢迎的企业搜索引擎。 Elasticsearch常与Logstash和Kibana一起部署&#xff0c;这一组合被称为 Elasitc Stack&#xff0c;用于启用日志分析用例&#xff0c;包括应用可观察性、安全日志分析和理解…

opencv计算机视觉

树莓派主机的无键盘解决 进入控制面板&#xff0c;更改适配器设置&#xff0c;WIFI属性&#xff0c;勾选 1.将网线两头分别接入树莓派和笔记本的网线接口 2.在无线连接属性那里勾选允许其他用户连接 3.运行cmd使用arp -a查看树莓派ip地址&#xff0c;或者使用ipscanner查看 cmd…

Springboot+vue的疫情信息管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的疫情信息管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的疫情信息管理系统&#xff0c;采用M&#xff08;model&a…

计算机专业必看的几部电影

计算机专业必看的几部电影 计算机专业必看的几部电影&#xff0c;就像一场精彩的编程盛宴&#xff01;《黑客帝国》让你穿越虚拟世界&#xff0c;感受高科技的魅力&#xff1b;《社交网络》揭示了互联网巨头的创业之路&#xff0c;《源代码》带你穿越时间解救世界&#xff0c;…