多线程的学习

多线程编辑:
可以简单理解进程是一个软件 而线程就是一个软件中多个可以同时运行的功能

 

 

实现多线程的第一种方式:使用Thead类我们再自己创造一个类继承于这个类我们在对Thead方法进行重写,注意我们再重写的时候一定要加上@Override这行

我犯下的错误2:

我们在类里面调用方法的时候我们是不需要加上对象的名字,当我们在想要使用多线程的时候我们要用对象名.start()  这个时候才能实现多线程

多线程的第二种实现方式:实现Runnable接口的方式进行实现

 

 

具体代码如上

实现多线程的第3种方式:

着种方式可以获得多线程的结果

实现多线程的步骤:第一创建任务 第二分配任务 第三讲任务交给多线程 第四启动多线程

Thread类的成员方法

继承的复习:当我们想要在子类进行构造方法我们可以先用super继承父类 ,然后我们在后面我们创建的线程取名字。

在多线程中如果我们使用的是接口的话,我们就需要创建任务,然后再将任务放到多线程中

如果我们使用的是extends 继承Thread类的话,我们就可以直接使用多线程

延时

Thread.sleep(毫秒) 这个其实就是和easyx库里面的sleep函数是一个意思,由于这个Thread.sleep是静态方法我们直接类名加上方法名使用。

设置线程优先级

对象名.setPriority()这个是给我们设置优先级的,最高优先级是10,最低优先级是1,这个优先级只是代表了一个概率的问题

守护线程(备胎线程)

 

 

具体代码如上:

效果就是作为备胎当它要保护的对象已经执行完了,那么这个备胎对象就没有执行下去的必要了,那么就会自动停止,注意这个不是马上就会停止,而是会等一段时间才会停下来

线程的生命周期

线程安全:由于多线程具有随机性,当一条语句还没有完全执行完有可能就会被另外一条语句所占有,这个时候就会造成错误,就好比我们和好朋友再上厕所,只有厕所有门的时候才能单独上厕所,如果厕所没有门,那么本来该单人厕所就会被两个人占有,就会出问题。

所以这个时候我们呢就需要一种操作’锁’:synchronized

我犯下的错误:

这个延时应该放在锁的外面

package duoxianchenanquan;public class Mythread extends Thread{static int ticket = 0;@Overridepublic void run(){while(true){try {Thread.sleep(10);} catch (InterruptedException e) {throw new RuntimeException(e);}synchronized (Mythread.class){if(ticket < 100){ticket++;System.out.println(getName() + "正在卖第" + ticket + "张票! ! !");}else {break;}}}}}

当我们需要对一个方法进行 就是一个同步方法

顺便复习一下this的使用方法:他的这个对象就是调用这个方法的对象

小技巧:ctrl + alt + m这个就可以使我们选择的一段代码直接转化为一个方法。

Lock锁

为了避免死锁我们就不能写一个锁嵌套的结构

生产消费机制

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

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

相关文章

多线程回答的滚瓜烂熟,面试官问我虚线程了解吗?我说不太了解!

Java虚拟线程&#xff08;Virtual Threads&#xff09;标志着Java在并发编程领域的一次重大飞跃&#xff0c;特别是从Java 21版本开始。这项新技术的引入旨在克服传统多线程和线程池存在的挑战。 多线程和线程池 在Java中&#xff0c;传统的多线程编程依赖于Thread类或实现Ru…

2024 年“认证杯”数学中国数学建模网络挑战赛

题目 C题 云中的海盐 巴黎气候协定提出的目标是&#xff1a;在 2100 年前&#xff0c;把全球平均气温相对于工业 革命以前的气温升幅控制在不超过 2 摄氏度的水平&#xff0c;并为 1.5 摄氏度而努力。 但事实上&#xff0c;许多之前的研究已经指出&#xff0c;全球的碳排放以及…

主从数据同步原理

2.2.主从数据同步原理 2.2.1.全量同步 主从第一次建立连接时&#xff0c;会执行全量同步&#xff0c;将master节点的所有数据都拷贝给slave节点&#xff0c;流程&#xff1a; 这里有一个问题&#xff0c;master如何得知salve是第一次来连接呢&#xff1f;&#xff1f; 有几个…

嵌入式C语言(十四)

在现代操作系统架构中&#xff0c;内核空间和用户空间之间增加了一个中间层&#xff0c;这就是系统调用层。 系统调用层主要有如下作用。 为用户空间程序提供一层硬件抽象接口。这能够让应用程序编程者从学习硬件设备底层编程中解放出来。例如&#xff0c;当需要读写一个文件…

Linux操作系统的学习

Linux系统的目录结构 / 是所有目录的顶点目录结构像一颗倒挂的树 Linux常用命令 常见命令 序号命令对应英文作用1lslist查看当前目录下的内容2pwdprint work directory查看当前所在目录3cd [目录名]change directory切换目录4touch [文件名]touch如果文件不存在&#xff0c;新…

TRX节点部署

安装说明 安装版本&#xff1a;4.7.4 安装目录&#xff1a;/data/docker-compose/trx 配置文件路径&#xff1a;/data/docker-compose/trx/config.conf 节点data数据&#xff1a;/data/docker-compose/trx/output-directory 安装方式&#xff1a;Dockerfiledockerdocker-compos…

数字化采购管理系统有什么作用?

数字化采购管理系统是一种以计算机技术为基础&#xff0c;用于管理和优化采购过程的信息系统&#xff0c;它的作用主要体现在以下几个方面&#xff1a; 1、优化采购流程&#xff1a;数字化采购管理系统可以帮助企业建立和优化采购流程&#xff0c;通过设定采购流程的各个环节和…

6.11物联网RK3399项目开发实录-驱动开发之定时器的使用(wulianjishu666)

嵌入式实战开发例程【珍贵收藏&#xff0c;开发必备】&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1tkDBNH9R3iAaHOG1Zj9q1Q?pwdt41u 定时器使用 前言 RK3399有 12 个 Timers (timer0-timer11)&#xff0c;有 12 个 Secure Timers(stimer0~stimer11) 和 2 个 …

鸿蒙实战开发-如何实现标准化数据定义与描述的功能。

介绍 本示例主要使用ohos.data.uniformTypeDescriptor 展示了标准化数据定义与描述的功能&#xff0c;在新增预置媒体文件后&#xff0c;对媒体文件的utd标准类型获取、utd类型归属类型查询、获取文件对应的utd类型的默认图标、支持自定义数据类型等功能。 实现过程中还使用到…

编译安装nginx

nginx版本 安装组件 yum -y install openssl-devel pcre-devel zlib-devel ./configure --with-http_ssl_module && make && make installln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

【C++算法模板】背包九讲(上):01背包、完全背包、多重背包

文章目录 1&#xff09;01背包1&#xff1a;二维数组2&#xff1a;一维数组 2&#xff09;完全背包1&#xff1a;朴素做法2&#xff1a;公式优化3&#xff1a;再优化一维数组 3&#xff09;多重背包1&#xff1a;朴素做法2&#xff1a;二进制优化3&#xff1a;单调队列优化 1&a…

AcWing-直方图中最大的矩形

131. 直方图中最大的矩形 - AcWing题库 所需知识&#xff1a;单调栈 思路&#xff1a;要求最大矩形&#xff0c;所以需要使矩形的高与长的乘积最大即可&#xff0c;依次从左到右将每一列当作中心列&#xff0c;向两边扩散&#xff0c;直到两边的高都小于该列的高&#xff0c;…

Vmware虚拟机Centos7固定IP地址

1、点击编辑-虚拟网络编辑器 2、点击更改设置、修改虚拟网络配置器并确认保存&#xff08;见图&#xff09; 这个子网IP和子网掩码的前三位需要一样网关的前三位需要和子网ip一致。 3、打开设置“网络和Internet”&#xff0c;点击“更改适配器选项”&#xff0c;点击适配器VM…

PP-LCNet:一种轻量级CPU卷积神经网络

PP-LCNet: A Lightweight CPU Convolutional Neural Network 最近看了一个新的分享&#xff0c;在图像分类的任务上表现良好&#xff0c;具有很高的实践意义。 论文&#xff1a; https://arxiv.org/pdf/2109.15099.pdf项目&#xff1a; https://github.com/PaddlePaddle/Padd…

JUC并发编程2(高并发,AQS)

JUC AQS核心 当有线程想获取锁时&#xff0c;其中一个线程使用CAS的将state变为1&#xff0c;将加锁线程设为自己。当其他线程来竞争锁时会&#xff0c;判断state是不是0&#xff0c;不是自己就把自己放入阻塞队列种&#xff08;这个阻塞队列是用双向链表实现&#xff09;&am…

探索ChatGPT-Plus:AI 助手全套开源解决方案

探索ChatGPT-Plus&#xff1a;AI 助手全套开源解决方案 ChatGPT-plus是一种新型的对话生成模型&#xff0c;它是在OpenAI的ChatGPT基础上进行了改进和优化的版本。ChatGPT-plus的出现引起了广泛关注&#xff0c;因为它在对话生成方面展现出了更加出色的表现和能力。在本文中&am…

蒙特卡洛方法【强化学习】

强化学习笔记 主要基于b站西湖大学赵世钰老师的【强化学习的数学原理】课程&#xff0c;个人觉得赵老师的课件深入浅出&#xff0c;很适合入门. 第一章 强化学习基本概念 第二章 贝尔曼方程 第三章 贝尔曼最优方程 第四章 值迭代和策略迭代 第五章 强化学习实践—GridWorld 第…

flutter嵌入原生view

一、iOS端(Swift实现) 1. 新建原生view(NativeView.swift) &#x1f3f7;️ 需要继承FlutterPlatformView &#xff0c;实现view()方法 import Foundation import Flutterclass NativeView: NSObject, FlutterPlatformView {private var _view: UIViewinit(frame: CGRect,view…

从文件夹(包含子文件夹)找到的包含特定关键词的 Word 文档复制到一个新的文件夹中

import os import glob import shutildef find_and_copy_docs(root_dir, keyword, target_dir):"""在指定的目录及其子目录下查找包含特定关键词的 Word 文档&#xff0c;并将它们复制到目标文件夹。参数:root_dir: 要搜索的根目录路径。keyword: 需要匹配的关键…

make/makefile学习

文章目录 1、makefile函数1.1、字符串替换函数&#xff1a;subst1.2、模式字符串替换函数&#xff1a;patsubst1.3、去空格函数&#xff1a;strip1.4、查找字符串函数&#xff1a;findstring 2、、:、&#xff1f;区别 1、makefile函数 1.1、字符串替换函数&#xff1a;subst …