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

news2024/10/4 14:56:13

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.coloradmin.cn/o/1457052.html

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

相关文章

vue3+ts项目搭建

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

自动化测试框架搭建全过程

前段时间写了一系列自动化测试相关的文章,当然更多的是方法和解决问题的思路角度去阐述我的一些观点。这篇文章来聊聊新手如何从零到一落地实践接口自动化测试。 为什么要做接口测试 测试理念的演变 早些时候,软件研发交付流程大多遵循V型或W型的瀑布…

9、内网安全-横向移动Exchange服务有账户CVE漏洞无账户口令爆破

用途:个人学习笔记,有所借鉴,欢迎指正! 背景: 在内网环境的主机中,大部分部署有Exchange邮件服务,对于Exchange服务的漏洞也是频出,在这种情况下,如果拿到内网中一台主机…

2024 年 2 月 TIOBE 指数:最流行的 10 种编程语言

Go 进入了 TIOBE 指数的前 10 名,这是谷歌编程语言有史以来的最高位置。 在 2024 年 2 月的 TIOBE 软件最受欢迎的编程语言列表中,Python、C 和 C 保持了它们的领先地位(图 A)。TIOBE 的专有积分系统考虑了根据多种大型搜索引擎&…

office的excel中使用,告诉我详细的解决方案,如何变成转化为金额格式

在Office的Excel中,如果你想将名为"MEREFIELD"的公式结果转换为金额格式,你可以遵循以下详细步骤来实现: 书写MEREFIELD公式: 首先,在Excel中输入或确认你的MEREFIELD公式。例如,假设这个公式是用…

剑指offer刷题笔记-链表

少年何妨梦摘星 敢挽桑弓射玉衡 解决与链表相关的问题总是有大量的指针操作,而指针操作的代码总是容易出错的。很多面试官喜欢出与链表相关的问题,就是想通过指针操作来考察应聘者的编码功底。 题目链接来自于 AcWing 、Leetcode(LCR&#xf…

微信美容预约小程序开发实战教程,快速掌握开发技巧

如果你想开发一个美容美发小程序,以下是一个搭建指南,供你参考。 1. 使用第三方制作平台 首先,你需要使用一个第三方制作平台,如乔拓云网。在该平台上,你需要注册并登录,然后点击【轻应用小程序】进入设计…

自动化测试框架搭建

思想: 1、基本目录的搭建 report:静态输出目录(报告或者日志) data:静态输入目录(可以存放Excel数据,被读取的一些数据) utils:实用方法层(这里存放的是项目的公共方法,一般拿到别…

2024年2月12日-2月18日周报

文章目录 1. 本周计划2. 完成情况2.1 论文摘要2.2 数据集2.3 基准测试 3. 总结及收获4. 下周计划 1. 本周计划 阅读论文《 E F W I E^{FWI} EFWI: Multiparameter Benchmark Datasets for Elastic Full Waveform Inversion of Geophysical Properties》 了解一种新型的数据集&…

备战蓝桥杯 Day7(序列dp)

基本分类 (1)单序列 a.最大子段和 b.最长上升子序列LIS (2)多序列 a.最长公共子序列 b.编辑距离 最大子段和 单序列dp一般开一维数组 最大子段和 - 洛谷https://www.luogu.com.cn/problem/P1115 分析: 写出状态和状…

chrome版本117驱动下载路,解决版本不匹配问题

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

生成式 AI - Diffusion 模型的数学原理(2)

来自 论文《 Denoising Diffusion Probabilistic Model》(DDPM) 论文链接: https://arxiv.org/abs/2006.11239 Hung-yi Lee 课件整理 文章目录 一、基本概念二、VAE与Diffusion model三、算法解释四、训练过程五、推理过程 一、基本概念 Diff…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之NavDestination组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之NavDestination组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、NavDestination组件 作为NavRouter组件的子组件,用于显示导…

计网day4

五 网络层 5.1 网络层功能概述 5.2 路由算法 5.3 IP数据报格式 无分类编址CIDR: ARP协议: DHCP协议: ICMP协议: 5.4 IPv6 5.5 RIP协议及距离向量算法 OSPF协议及链路状态算法: BGP协议&#xf…

作为一个程序员,最少要看过这几部电影吧?

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

【每天学习一点点 day05】工程化 重新认识npm 02_包(package.json)的概念、模块(node_modules)、范围(scoped

1. 包package About packages and modules | npm Docs (npmjs.com) 1.1. package package.json包的描述性文件 A package is a file or directory that is described by a package.json file. 包是由 package.json 文件描述的文件或目录。 A package must contain a packa…

追赶OpenAI的Sora:Meta开源V-JEPA,让AI学会认识世界!

就在Sora疯狂刷屏那天,还有两款重磅产品发布:一个是谷歌的Gemini 1.5,首个支持100万tokens上下文的大模型;另外一个便是全球科技、社交巨头Meta的V-JEPA。 有趣的是,在功能方面V-JEPA与Sora有很多相似之处&#xff0c…

备战蓝桥杯 Day5

1191:流感传染 【题目描述】 有一批易感人群住在网格状的宿舍区内,宿舍区为n*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着。在第一天,有些房间里的人得了流感,以后每天,得…

用户空间与内核通信(一)

在Linux中,内核空间与用户空间是操作系统中的两个主要部分,它们有着明显的区别和不同的功能。 内核空间: 内核空间是操作系统内核运行的区域,它包括了操作系统内核代码、数据结构和设备驱动程序等。内核空间位于虚拟地址空间的最…

CleanMyMac X2024破解电脑版安装包下载

CleanMyMac X 4.14.6 是 CleanMyMac X 的一个具体版本号。这个版本可能包含了一些新的功能、改进和修复,以提高软件的性能和稳定性。以下是一些关于 CleanMyMac X 4.14.6 的特点和更新内容: 恶意软件保护:CleanMyMac X 4.14.6 继续加强其恶意…