Java多线程编程学习

1 线程的概念

        多线程是指同一个程序同时存在多个“执行体”,它们可以同时工作

        1.1 进程的概念

        一次程序的每一次运行都叫做进程(一个进程可以包含多个线程

        1.2 线程的概念

        多线程是指一个程序中多段代码同时并发进行

        1.3 主线程的概念

        JavaMain中的线程就叫做主线程

        在Main中执行再创建的线程叫做其他线程

        运行结果:

2 Thread类与Runnable接口

        再说Thread类之前,我们可以想一想,有没有一种办法能够让三个线程同时进行呢

        第一种方法  继承Thread类

        这个子类应该重写Thread类中的run()方法,子类的对象需要调用start()来启动

         练习:创建2个线程,一个线程负责输出英文字母表,另一个线程负责输出希腊字母表。通过继承Thread类实现创建线程。

        第二种方法  实现Runnable接口

        通常使用Thread(Runnable target)构造方法创建线程,实现Runnable接口的类可以用来创建线程

         练习:创建2个线程,一个线程负责输出英文字母表,另一个线程负责输出希腊字母表。通过实现Runnable接口创建线程。

3 线程的生命周期

        3.1 线程的生命周期

        线程的生命周期是指线程从产生到消亡的过程,一个线程无论在任何时间都处于某种线程状态

        练习     创建3个线程:老师,李四,王五,其中李四准备睡10分钟后再开始听课,王五准备睡45分钟再开始听课。老师在输出3句“上课”后,吵醒休眠的线程李四,李四被吵醒后,负责再吵醒休眠的线程王五。

        3.2 线程同步

        线程同步就是多线程都需要使用一个synchronized修饰的方法,多个进程同时访问一个变量,并且多个进程要修改这个变量的问题,要进行线程同步处理。

         练习     每学期开学,教材科需要购入和出售教材。创建2个线程,一个线程负责购入教材,另一个线程负责向学生出售教材。两个线程都要操作教材科的教材种类及册数数据。     要求通过线程同步,保证一个线程操作完之后,另一个线程再执行。

        3.3 协调同步线程

        wait()方法中断方法的执行,让本线程等待,允许其他线程使用这个同步方法。

        notifyAll()通知所有的由于使用这个同步方法而处于等待的线程结束等待。曾中断的线程就会从刚才的中断处继续执行这个同步方法,并遵循“先中断先继续”的原则。

        notify()方法只是通知处于等待中的线程的某一个结束等待。

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

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

相关文章

Python语言学习笔记之十(字符串处理)

本课程对于有其它语言基础的开发人员可以参考和学习,同时也是记录下来,为个人学习使用,文档中有此不当之处,请谅解。 字符串处理:以实现字符串的分割、替换、格式化、大小写转换,Python字符串处理是指对Py…

人工智能知识蒸馏:模型精简与迁移的奇妙之旅

导言 在人工智能领域,知识蒸馏作为一种模型精简和知识迁移的技术手段,逐渐成为提高模型效能和适应更广泛场景的关键工具。知识蒸馏是近年来在深度学习领域备受瞩目的技术,其通过将大模型的知识传递给小模型,旨在实现模型的轻量化与…

docker-compose Install gitea

gitea 前言 Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。 Gitea 最初是从 Gogs 分支而来…

交友网站的设计与实现(源码+数据库+论文+开题报告+说明文档)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

TSINGSEE青犀基于opencv的安全帽/反光衣/工作服AI检测算法自动识别及应用

安全帽/反光衣/工作服自动识别检测算法可以通过opencvyolo网络对现场画面中人员穿戴着装进行实时分析检测,判断人员是否穿着反光衣/安全帽。在应用场景中,安全帽/反光衣/工作服检测应用十分重要,通过对人员的规范着装进行实时监测与预警&…

CloudFlare 优选ip 和 优选域名的获取方法

1.CloudFlare优选IP网站:【链接直达】 2.CloudFlare 优选IP工具:【开源软件】 3.CloudFlare 优选域名:【GitHub开源工具】 4.CF优选域名推荐: time.cloudflare.com shopify.com time.is icook.hk icook.tw ip.sb japan.com malaysia.com rus…

YOLOV8:最新探测物体状态综合指南

YLOLV8是最新的以YOO为基础的物体检测模型,提供最先进的性能。 利用前几部《yolo》,yolov8更快速更准确,同时为训练模式提供统一的框架 物体检测实例分割影像分类 到编写本文件时,许多功能还没有被添加到超催化剂YLOLV8存储库中。这包括训练有素的模型的一整套导…

Axure元件的介绍使用以及登录界面和个人简历的绘制

目录 一、Axure元件介绍 1.1 简介 1.2 特点 1.3 元件操作 二、基本元件的使用 2.1 矩形和圆形 2.2 图片 2.2.1 图片元件特点 2.2.2 具体操作 2.3 占位符 2.3.1 使用规范方法举例 2.4 文本元件 2.4.1 图示 2.5 热区 2.5.1 图示 2.5.2 热区辅助页面排版 2.6 线段…

Redis7--基础篇8(集群cluster)

1. 集群(cluster)介绍 由于数据量过大,单个Master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集 的一部分,这就是Redis的集群,其作用是提供在多个…

2023人物专访【中国新时代艺坛楷模】徐大龙盆景艺术专题报道

随着社会经济的发展和人们审美观念的改变,苏派盆景艺术以其精湛的技艺和独特的艺术魅力,又成为了中外盆景界的一大亮点。今天来聊聊江南盆景艺术专家徐大龙先生。 徐大龙,江苏常州人,「复兴之路,强国有我」50位爱国奉献…

web(HTML之表单练习)

使用HTML实现该界面: 要求如下: 用户名为文本框,名称为 UserName,长度为 15,最大字符数为 20。 密码为密码框,名称为 UserPass,长度为 15,最大字符数为 20。 性别为两个单选按钮&a…

Web安全漏洞分析—文件包含

在当今数字化时代,随着Web应用程序的广泛应用,网络安全问题愈加凸显。其中,文件包含漏洞作为一种常见但危险的安全隐患,为恶意攻击者提供了可乘之机。在这篇博客中,我们将深入探讨文件包含漏洞的本质、攻击手法以及应对…

PMP项目管理 - 沟通管理

系列文章目录 PMP项目管理 - 质量管理 PMP项目管理 - 采购管理 PMP项目管理 - 资源管理 PMP项目管理 - 风险管理 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in…

LVS-DR部署

目录 LVS的工作模式及其工作过程 NAT模式(VS-NAT) 直接路由模式(VS-DR) IP隧道模式(VS-TUN) DR模式 LVS负载均衡群集的分析及特点 数据包流向分析 DR 模式的特点 LVS-DR部署实例 LVS-DR模式部署流…

2023最新最全【PostMan】安装教程

为了验证接口能否被正常访问,我们常常需要使用测试工具,来对数据接口进行检测。 好处:接口测试工具能让我们在不写任何代码的情况下,对接口进行调用和调试。 下载并安装PostMan 首先,下载并安装PostMan,请…

吊炸天,腾讯开源的一站式微服务解决方案

项目介绍 Spring Cloud Tencent 是腾讯开源的一站式微服务解决方案。 Spring Cloud Tencent 实现了Spring Cloud 标准微服务 SPI,开发者可以基于 Spring Cloud Tencent 快速开发 Spring Cloud 云原生分布式应用。 Spring Cloud Tencent 的核心依托腾讯开源的一站式…

Git-瑞吉外卖

什么是GIt? 分布式版本控制工具,用来管理源代码文件。分布式主要体现在两种仓库(本地仓库、远程仓库)。 git的作用? 代码回溯、版本切换(切换不同框架)、多人协作、远程备份 基本命令&…

SpringBoot零基础入门到项目实战——学习路线规划与目录结构

文章目录 第一部分:Spring Boot基础第二部分:Web开发与RESTful API第三部分:数据访问与持久化第四部分:安全与身份验证第五部分:高级主题第六部分:测试总结与扩展实战项目练习 🎉欢迎来到Spring…

Base64编码解码(文本与文件)

目录 1.什么是base64 2.在java中使用base64 3.在js中使用base64 1.什么是base64 base64编码就是将字符串以每3个比特(bit)的字节子序列拆分为4个6比特(bit)的字节子序列(这个6比特是有效字节,最左边两个…

xilinx原语介绍及仿真——ODELAYE2

7系列IO模块相关的结构如图1所示,前文对IOB、IDELAYE2、ILOGIC、OLOGIC进行了讲解,还剩下ISERDESE2、OSERDESE2、ODELAYE2原语,本文对ODELAYE2进行讲解,该原语只有HP bank才有,即7系列FPGA的A7系列没有ODELAYE2结构&am…