线程的使用

956abe65febc48a0828190bd9b9d4219.gif线程的创建方式

 

 

1、实现Runnable

 

Runnable规定的方法是run(),无返回值,无法抛出异常 实现Callable

 

2、Callable规定的方法是call(),任务执行后有返回值,可以抛出异常

 

3、继承Thread类创建多线程

 

继承java.lang.Thread类,重写Thread类的run()方法,在run()方法中实现运行在线程上的代码,调用start()方法开启线程。 Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过 Thread 类的 start()实例方法。start()方法是一个 native 方法,它将启动一个新线程,并执行 run()方法 通过线程池创建线程. 线程和数据库连接这些资源都是非常宝贵的资源。那么每次需要的时候创建,不需要的时候销毁,是非常浪费资源的。那么我们就可以使用缓存的策略,也就是使用线程池。

 

wait和Sleep的区别

 

sleep wait

 

不释放锁对象 释放锁对象,需要notify进行唤醒

 

在任何地方(可以定时) 同步方法,同步代码块

 

必须捕获异常 不要捕获异常

 

线程和进程

 

线程 进程

 

系统运行的基本单位,程序执行的最小单位 系统资源分配和调度的基本单位

 

线程状态

 

新建 就绪 运行 阻塞 销毁

 

synchronized和Lock的区别

 

synchronized lock

 

主动释放锁 final里面进行强制释放

 

不可中断,非公平锁 可以判断,公平锁

 

少量同步 大量同步  

 

独占锁 公平锁和非公平锁

 

多线程之间如何通信

 

1、使用volalite修饰变量,进行变量共享

 

2、使用wait

 

线程池参数

 

1、线程池大小

 

# 初始连接数

initialSize: 5

# 最小连接池数量

minIdle: 10

# 最大连接池数量

maxActive: 20

2、最大线程数量

 

3、空闲线程存活时间

 

4、工作队列

 

5、线程工厂

 

线程的拒绝策略

 

线程自旋锁

自旋锁是一种多线程同步的变量;

 

使用自旋锁的线程会反复检查锁变量是否可用,如果不可用会一直循环反复检查;

 

自旋锁不会让出CPU,是一种忙等待状态; 自旋锁是一种死循环等待锁被释放;

 

 join和yield

 

join的原理就是wait方法

 

t.join()表示等待t线程执行完毕后再执行

 

join线程有严格的先后顺序,调用它的线程需要执行完以后其他线程才会跟着执行。

 

 

 

yield 是指线程让步,使其线程从运行状态变为启动状态

 

当一个线程调用yield时会把这个线程的锁 ,抛出去,使其和它一样优先级的线程进行获取锁,当然这个线程本身也会参与锁的竞争,并有可能获取锁对象,重新执行

 

yield是暂停当前正在执行的线程对象,把时间让给其他线程。

 

使用场合:join线程有严格的先后顺序,yield当前线程占用cpu使用率很高时,把时间让出来。(死循环时)

 

线程的优先级

线程的优先级就是设置哪个线程优先执行,但也不是绝对的,只是让优先级高的线程优先运行的几率高一些。

线程默认是NORM_PRIORITY = 5; 设置优先级使用的是setPriority()函数。

Tread里面的方法大多数是final进行修饰的,防止继承的时候进行修改

 线程间的相互通信

 

线程间是通过相互作用,共同完成一个任务当一个线程调用wait方法后便进入等待状态,需要另一线程调用notify()方法对它进行唤醒。

 

notifyAll可以唤醒所有线程,都必须在synchronized方法或synchronized块里使用

 

 wait ,notify , notifyAll都必须在synchronized修饰的方法或synchronized块中使用,都属于Object的方法,可以被所有类继承,都是final修饰的方法,不能通过子类覆写去改变他们的行为。

处理线程安全的措施

1、放在栈里面的数据都是线程安全的

2、同步关键字或者同步代码块

3、final修饰的变量都是线程安全的

4、TreadLoad放置的变量

5、使用线程安全的集合和类等

stop

stop()方法作为一种粗暴的线程终止行为,在线程终止之前没有对其做任何的清除操作,因此具有固有的不安全性。

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

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

相关文章

C++ //练习 1.15 编写程序,包含第14页”再探编译“中讨论的常见错误。熟悉编译器生成的错误信息。

C Primer(第5版) 练习 1.15 练习 1.15 编写程序,包含第14页”再探编译“中讨论的常见错误。熟悉编译器生成的错误信息。 环境:Linux Ubuntu(云服务器) 工具:vim 代码块 /******************…

[足式机器人]Part2 Dr. CAN学习笔记-Ch04 Advanced控制理论

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记 - Ch04 Advanced控制理论 1. 绪论2. 状态空间表达State-Space Representation3. Phase Portrait相图,相轨迹3 1. 1-D3 2. 2-D3 3. General Form3 4. Summary3.5. 爱情中的数学-Phase …

.NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接

Flurl.Http-3.2.4 升级到 4.0.0 版本后,https请求异常:Call failed. The SSL connection could not be established. 如下图: Flurl.Http-3.2.4版本绕过https的代码,对于 Flurl.Http-4.0.0 版本来说方法不再适用,3.2.…

【萤火虫系列教程】3/5-Adobe Firefly 创意填充

003-Adobe Firefly 创意填充 创意填充 登录账号后,在主页点击创意填充的【生成】按钮,进入到创意填充页面 我们可以上传自己的图像 一键抠图 点击【背景】就可以把主图抠出来 点击【反转】就可以把背景抠出来 点击【清除】就可以恢复到图片原来…

表的增删改查 进阶(一)

🎥 个人主页:Dikz12🔥个人专栏:MySql📕格言:那些在暗处执拗生长的花,终有一日会馥郁传香欢迎大家👍点赞✍评论⭐收藏 目录 数据库约束 约束类型 NOT NUll 约束 UNIQUE 约束 D…

K8S对外服务ingress

Sevice作用体现在两个方面 集群内部 不断跟踪pod的变化,更新endpoint中的pod对象,基于pod的ip地址不断发现的一种服务发现机制 集群外部 类似负载均衡器,把流量(ip端口),不涉及转发url(http ht…

STM32WLE5JC介绍

32位 ARM Cotrex-M4 CPU 32MHz晶体振荡器 32 kHz RTC振荡器与校准 20x32位备份寄存器 引导程序支持USART和SPI接口 介绍 STM32WLE5/E4xx远程无线和超低功耗器件嵌入了强大的超低功耗LPWAN兼容无线电解决方案,支持以下调制:LoRa,&#xff08…

设计模式-简单工厂

设计模式-简单工厂 简单工厂模式是一个集中管理对象创建,并根据条件生成所需类型对象的设计模式,有助于提高代码的复用性和维护性,但可能会导致工厂类过于复杂且违反开闭原则。 抽象提取理论: 封装对象创建过程解耦客户端与产品…

读书笔记-《数据结构与算法》-摘要8[桶排序]

桶排序和归并排序有那么点点类似,也使用了归并的思想。大致步骤如下: 设置一个定量的数组当作空桶。Divide - 从待排序数组中取出元素,将元素按照一定的规则塞进对应的桶子去。对每个非空桶进行排序,通常可在塞元素入桶时进行插入…

JAVA SECS发送Report C#处理SECS Report SECS发送事件资料大全 S6F11 建立通讯S1F13

发送S6F11非常简单,只需5~6行代码,最核心是代码清晰易懂。 任何人都可以一看就能上手,如果说用代码可读性作为不可替代性的壁垒就无话可说了。 private void buttonS6F11_Click(object sender, EventArgs e) {int nTransaction 0;// 数据部…

数据守护盾牌:敏感数据扫描与脱敏,让安全合规无忧

前言 在信息时代,数据已经成为企业和组织的核心资产,其价值与日俱增。然而,随着数据使用的普及和复杂度的提升,数据安全与合规问题也变得越来越突出。敏感数据的保护显得尤为重要,因为这些数据一旦泄露或被不当使用&a…

文件操作解析(一)

前言 很多非计科的专业并未对文件操作这点做出详细解释,今天复习到这里就想趁此机会记录一下自己学到的知识,也希望能对大家有所帮助。 一.为什么使用文件 如果没有⽂件,我们写的程序的数据是存储在电脑的 内存中, 如果程序退出…

电脑屏幕横过来了怎么恢复?这4个方法好用又简单!

“我在用电脑的时候不知道为什么,电脑屏幕一整个都横过来了。导致我无法正常使用电脑,应该怎么解决这个问题呢?希望大家帮我出出主意!” 在现代社会中,电脑已经成为了我们工作、学习和生活中不可或缺的工具。然而&…

搭建开源数据库中间件MyCat2-配置mysql数据库双主双从

mycat2官网:MyCat2 前言:mycat2下载地址无法访问,不知道是不是被DNS污染了,还是需要搭梯子访问,所以我只能找到1.21的版本进行安装。搭建mycat2的前提是搭建数据库主从复制。 架构:双主双从 配置&#xf…

汽车芯片「新变量」

编者按:汽车行业的格局重构和技术革新,也在推动芯片赛道进入变革周期。不同商业模式的博弈,持续升温。 对于智能汽车来说,过去几年经历了多轮硬件和软件的性能迭代,甚至是革新,如今,市场正在进…

云原生场景下,AIGC 模型服务的工程挑战和应对

作者:徐之浩、车漾 “成本”、“性能”和 “效率”正在成为影响大模型生产和应用的三个核心因素,也是企业基础设施在面临生产、使用大模型时的全新挑战。AI 领域的快速发展不仅需要算法的突破,也需要工程的创新。 大模型推理对基础设施带来…

测试开发(5)测试分类标准 :按测试对像划分、按是否查看代码划分、按开发阶段划分、按测试实施组织、按是否运行划分、按是否手工划分、按测试地域划分

接上次博客: 测试开发(4)测试用例基本要素、好处、测试用例设计方法 :基于需求进行测试用例的设计;具体的设计方法【等价类、边界值、错误猜测法、场景设计法、因果图/测试表法、正交排列】、万能公式、有效性、粒度和…

关于FET等效电路电容模型中的能量非守恒问题

标题:On the Energy Nonconservation in the FET’s Equivalent Circuit Capacitance Model 摘要 摘要——本文回答了长期以来关于如何在场效应晶体管(FET)等效电路模型中非互易电容形式与能量守恒原理之间达成调和的问题。通过对模拟和测量…

FPGA引脚物理电平(内部资源,Select IO)-认知2

引脚电平 The SelectIO pins can be configured to various I/O standards, both single-ended and differential. • Single-ended I/O standards (e.g., LVCMOS, LVTTL, HSTL, PCI, and SSTL) • Differential I/O standards (e.g., LVDS, Mini_LVDS, RSDS, PPDS, BLVDS, and…

spring常见漏洞(5)

CVE-2018-1273 Spring Data Commons远程命令执行(CVE-2018-1273),当用户在项目中利用了Spring-data的相关web特性对用户的输入参数进行自动匹配的时候,会将用户提交的form表单的key值作为Spel的执行内容而产生漏洞 影响版本 Spring Data Commons 1.13…