多线程并发篇---第九篇

news/2024/5/20 12:10:22 标签: 死锁

系列文章目录


文章目录

  • 系列文章目录
  • 一、产生死锁的四个必要条件?
  • 二、如何避免死锁
  • 三、线程池核心线程数怎么设置呢?


一、产生死锁的四个必要条件?

  1. 互斥条件:一个资源每次只能被一个线程使用
  2. 请求与保持条件:一个线程因请求资源而阻塞时,对已获得的资源保持不放
  3. 不剥夺条件:进程已经获得的资源,在未使用完之前,不能强行剥夺
  4. 循环等待条件:若干线程之间形成一种头尾相接的循环等待资源关系

二、如何避免死锁

指定获取锁的顺序,举例如下:

  1. 比如某个线程只有获得A锁和B锁才能对某资源进行操作,在多线程条件下,如何避免死锁
  2. 获得锁的顺序是一定的,比如规定,只有获得A锁的线程才有资格获取B锁,按顺序获取锁就可
    以避免死锁!!!

三、线程池核心线程数怎么设置呢?

分为CPU密集型和IO密集型
CPU
这种任务消耗的主要是 CPU 资源,可以将线程数设置为 N(CPU 核心数)+1,比


http://www.niftyadmin.cn/n/5088208.html

相关文章

程 控 电 源1761程控模块电源

程 控 电 源 1761程控模块电源 1761程控模块电源是在自动测试环境中提供偏置功率和对部件或最终产品提供激励的理想设备,是测试系统必备的测试仪器。适用于研发、设计、生产制造等自动测试领域。 1761程控模块电源为用户选配电源提供了灵活性,根据需要…

Mysql数据库 4.图形化界面工具DataGrip

DataGrip工具 选择进入官网安装 ataGrip: The Cross-Platform IDE for Databases && SQL by JetBrains 下载最新版本的可以直接点击 Download 下载,下载其他版本的点击 Other versions 下载其他版本 .选择对应的版本进行下载即可 下载完,得到…

基于Linux安装Hive

Hive安装包下载地址 Index of /dist/hive 上传解压 [rootmaster opt]# cd /usr/local/ [rootmaster local]# tar -zxvf /opt/apache-hive-3.1.2-bin.tar.gz重命名及更改权限 mv apache-hive-3.1.2-bin hivechown -R hadoop:hadoop hive配置环境变量 #编辑配置 vi /etc/pro…

MySQL的index merge(索引合并)导致数据库死锁分析与解决方案 | 京东云技术团队

背景 在DBS-集群列表-更多-连接查询-死锁中,看到9月22日有数据库死锁日志,后排查发现是因为mysql的优化-index merge(索引合并)导致数据库死锁。 定义 index merge(索引合并):该数据库查询优化的一种技术&#xff0…

Python 集合

目录 1 集合1.1 集合创建和删除1.2 集合相关操作 声明:本文作为自己的学习笔记,欢迎大家于本人学习交流,转载请注明出处 本文参考 尚学堂 Python 400 集 如果本文有侵犯您的知识产权和版权问题,请通知本人,本人会立即做…

400电话-400电话办理-400号码办理

400电话是一种特殊的电话号码,以"400"开头,通常用于企业客户服务、售后支持等方面。随着互联网的发展,越来越多的企业开始意识到400电话的重要性,并积极办理400号码。 首先,办理400电话可以提升企业形象和信…

通讯录(C语言版)

用c语言实现一个通讯录 功能:.添加、删除、查找、更改、显示、排序联系人 内存存储方式:结构体数组 1.打印菜单,各个功能分别用函数实现,将函数声明放在头文件中。 2.定义联系人信息,将联系人信息与count&#xff…

springboot 导出word模板

一、安装依赖 <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.1</version></dependency>二、定义工具类 package com.example.springbootmp.utils;import com.deepoove.poi.XWP…