《Java高并发程序设计》阅读笔记

2023-05-16

第一章

1. 同步和异步

2. 并发和并行

3. 临界区:表示一种公共资源,可以被多个线程使用,但是每一次只能有一个线程使用它,一旦临界区资源被占用,其他线程想要使用这个资源就必须等待。

4. 阻塞和非阻塞

5. 死锁、饥饿、活锁

饥饿:某一个或者多个线程因为种种原因无法获得所需要的资源,导致一直无法执行。比如它的线程优先级可能太低。

活锁:线程互相谦让,主动将资源释放给其他线程,导致资源不断地在两个线程中跳动,而没有一个线程可以同时拿到所有资源而正常执行。

6. 并发级别

阻塞:无论是synchronized或者重入锁,都会试图在执行后续代码前,得到临界区的锁,如果得不到,线程就会被挂起等待,直到占有了所需资源为止。

无饥饿:线程之间没有优先级的存在

无障碍:不会因为临界区的问题被挂起,大家都可以进入临界区,如果一起修改共享数据就会立即对自己做的修改进行回滚

无锁:线程会不断尝试修改共享变量,如果没有冲突修改成功,程序退出,否则继续尝试修改。只要求一个线程可以在有限步内完成操作

无等待:要求所有的线程都必须在有限步内完成,这样就不会有饥饿问题

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《Java高并发程序设计》阅读笔记 的相关文章

  • while循环内的递归,它是如何工作的?

    你能告诉我这段java代码是如何工作的吗 public class Main public static void main String args Strangemethod 5 public static void Strangemet
  • 无法获取未知属性“运行时”Gradle 7.0

    我最近切换到 gradle 7 0 现在无法构建我的项目 jar 并出现错误 无法获取 org gradle api internal artifacts configurations DefaultConfigurationContain
  • 通过代理从java发送电子邮件

    我使用 Java Mail API 来发送和接收电子邮件 现在我做这个项目的地方有一个代理服务器 我可以知道如何通过代理服务器从java发送电子邮件吗 请参阅此处的常见问题解答 http www oracle com technetwork
  • Java 将 String[] 转换为 int[]

    我有一个 String 其中每个元素都可以转换为整数 将其转换为 int 的最佳方法是什么 int StringArrayToIntArray String s public static int StringArrToIntArr Str
  • Android - 使用 Intent 打开 PDF 文档关闭后不保存

    我面临的问题是 当尝试保存对使用此 URI 打开的 PDF 文档的更改时内容 xx xxx xxx fileprovider external Download Sync FileName pdf 我所做的任何更改在关闭文档后都不会保存 但
  • Java 内存错误:无法创建新的本机线程

    运行 java 服务器时 我在 UNIX 服务器上收到此错误 Exception in thread Thread 0 java lang OutOfMemoryError unable to create new native threa
  • 如何将选定的项目移动到列表顶部

    List
  • Hazelcast Jet 变更数据捕获

    我在我的应用程序中使用 Hazelcast 更改数据捕获 CDC 我使用 CDC 的原因是 如果使用 jdbc 或其他替代功能将数据加载到缓存中 会花费大量时间 所以CDC将在数据库和 Hazelcast Jet 之间进行数据同步 Stre
  • 如何知道 Solr Optimize 何时完成?

    我正在使用 Solr php client 通过 php 与 Solr 进行通信 这段代码触发solr优化命令 solr gt optimize 请问有没有什么方法可以确定优化完成了 这都是因为我的网站上有一个管理页面 我每天必须手动优化
  • 在 Android 上解析 RSS

    我有几个 RSS 源需要为我的应用程序进行解析 我按照这里的优秀教程进行操作 http w2davids wordpress com android rssatom feeds parsing with rome http w2davids
  • 使用java将文件从GCS存储桶传输到SFTP服务器

    我能够从 GCS 存储桶读取文件 但所有库都喜欢jsch将文件传输到 SFTP 服务器时会查找文件路径 而不是内存中的文件 我不想将从GCS读取的文件写入磁盘 如何将内存中的文件传输到SFTP 我假设您想上传内存中的数据 JSch 实际上有
  • IntelliJ 对于 Java 项目使用的默认构建过程是什么?

    直接从 IntelliJ 中的 IDE 构建 Java 项目非常好 它速度很快 而且很有效 我无法找到任何有关 IntelliJ 如何进行这些默认构建的文档 我猜它使用Ant 我想做的是为下载我的项目的任何人自动化这个快速 轻松的构建过程
  • Maven 依赖冲突:org.w3c.dom.ElementTraversal

    我有一个 Java 代码库 它使用 Maven 进行依赖项解析并在 CI 上运行测试 经过最近的一批开发 大到足以很难识别重大更改 我的一些测试现在在通过 Maven 运行时失败了NoClassDefFoundError for org w
  • spring-hibernate 花费更多时间的任何原因?

    目前 我正在春季和冬眠期间从事一个项目 我来到这里 获取记录并在 JSP 中显示这些记录需要更多时间 我在各处都保留了时间戳 以查看哪里花费了更多时间 Time HomeController start 2014 07 09 18 58 5
  • 如何删除 Spring 的 RestTemplate 添加的某些 HTTP 标头?

    我在远程服务方面遇到问题 我无法控制对使用 Spring 的 RestTemplate 发送的请求进行 HTTP 400 响应 使用发送的请求curl但被接受了 所以我将它们与通过 RestTemplate 发送的内容进行了比较 特别是 S
  • 访问 JAR 资源

    我有一个jar包含我想要分发的资源 主要是缓存 日志记录等配置 的文件 我对这些资源的相对路径有问题 所以我做了我在另一个 stackoverflow 问题中发现的问题 该问题说这是一种有效的方法 ClassInTheSamePackage
  • Selenium 查看鼠标/指针

    有什么方法可以在运行测试时真正看到硒鼠标吗 要么是 Windows 光标图像 要么是某种点或十字线或任何东西 我正在尝试使用拖放功能selenium and java in an HTML5Web 应用程序 并且能够看到光标以了解它实际在做
  • SQL准备语句如何通过多个可能的菜单选择进行选择?

    所以我有 4 个菜单选择 产品 位置 课程类型和类别 所有这些都可以为空 使用 JSF 编程 但这应该与这个问题无关 因为它是一个 SQL 问题 菜单选择将向托管 bean 发送用户选择的变量 并使用准备好的语句使用用户选择的菜单中的信息
  • 尝试 Catch 性能 Java

    当捕获异常而不是进行检查时 try catch 需要多长时间 以纳秒为单位 假设消息具有用于查找的 HashMap 类型性能 try timestamp message getLongField MessageField TIMESTAMP
  • 应用服务器如何注入私有字段?

    我看到这个问题 注入私有 包或公共字段或提供 setter https stackoverflow com questions 2021716 inject into private package or public field or p

随机推荐

  • Java银行账户可透支类

    账户类 java package com github Mrtiang public class Account 创建账户属性 private int id private double balance private double ann
  • java继承的概念与相关应用

    继承 1 继承概述 需求说明 xff1a 设计两个类 xff1a Dog和Penguin 问题 xff1a 其中属性和方法有大量的重复 xff0c 可以优化 xff0c 使用继承 继承使用的关键字 xff1a extends xff1a 扩
  • Java类与继承

    继承二 1 static关键字 使用场景 xff1a 当某些场景下不需要创建多个 内容 xff0c 每个类的实例对象共享一个 内容 时就可以使用static关键字来修饰 含义 xff1a static表示静态内容 xff0c 使用stati
  • 继承,static关键字,abstract,单例模式

    1 为什么要有类的继承性 类的继承性可以减少代码冗余度 xff0c 提高代码复用性 xff0c 提高代码操作效率 2 继承的格式 xff08 语法 xff09 子类 extends 父类 3 子类继承父类后有哪些不同 子类范围大于父类 xf
  • KVM详解(一)——KVM基础知识

    今天继续给大家介绍Linux运维相关知识 xff0c 本文主要内容是KVM的基础知识 一 虚拟化简介 xff08 一 xff09 虚拟化概述 在计算机中 xff0c 虚拟化技术是一种资源管理技术 xff0c 可以将计算机的各硬件资源 xff
  • Linux桌面图形化安装详解

    今天继续给大家介绍Linux相关知识 xff0c 本文主要内容是Linux xff08 CentOS7 xff09 图形化GUI页面安装详解 一 Linux GUI图形化页面简介 尽管在运维工作中 xff0c 我们很少在Linux上安装图形
  • 【MediaSoup c#】 worker的创建

    js rust 不太熟 c 似乎还好懂一些 学习media soup 的各个组件及大体使用方式 学习其设计理念 MediasoupServer 管理worker列表 worker的表达是通过 IWorker 抽象类 拥有一个observer
  • KVM详解(三)——KVM创建虚拟机

    今天继续给大家介绍Linux运维相关知识 xff0c 本文主要内容是在KVM上创建虚拟机 一 安装准备 在前文KVM详解 xff08 二 xff09 KVM安装部署中 xff0c 我们安装了KVM 今天 xff0c 我们就来创建一个KVM的
  • KVM详解(九)——CentOS6虚拟机关机失败问题解决

    今天继续给大家介绍Linux运维相关知识 xff0c 本文主要内容是CentOS6虚拟机关机失败问题解决 一 问题描述 当我们使用KVM安装CentOS6系统后 xff0c 会发现一个问题 xff0c 即无法通过virsh shutdown
  • Python循环结构详解

    今天继续给大家介绍Python相关知识 xff0c 本文主要内容是Python循环结构 循环是一种编程语言的重要结构 xff0c 在Python中 xff0c 存在着两种循环 xff0c 一种是遍历循环 xff0c 一种是while循环 一
  • Ubuntu配置sudo命令不需要输入密码

    执行以下命令 xff1a span class token function sudo span visudo span class token comment sudo visudo默认使用的编辑器是nano xff0c 使用上下键移动
  • 智慧社区信息管理系统的设计与实现(论文打包下载)

    摘 要 近几年来 xff0c 随着网上支付方式的普及 xff0c 越来越多的人选择使用网上支付 xff0c 但由于网上支付的方式还未普及到生活的各方面 xff0c 因此本系统的完成将为物业小区提供合理的线上管理模式 xff0c 代替传统的线
  • vsftp配置详解篇

    在配置安装vsftpd过程中 xff0c 我遇到了很多坑 xff1f 查了上百篇博客 xff0c 才把这些坑一一填满 这里记录是为了方便后来者查阅 xff0c 我也是个小白 有问题请不要客气 xff0c 直接喷就是了 xff01 vsftp
  • RNN构建语言模型(用前一个单词预测下一个单词)

    训练RNN的时候 xff0c 根据反向传播 xff0c 梯度会不断相乘 xff0c 很容易出现梯度消失和梯度爆炸 通常的解决方法 xff1a 对于梯度爆炸 xff1a Gradient Clipping xff1a 如果梯度太大就把它往下卡
  • pytorch中使用tensorboard绘制Accuracy/Loss曲线(train和test显示在同一幅图中)

    因为tensorboard可以在同一幅图中显示不同文件夹下的曲线 xff0c 所以将train和test分别存到不同的文件夹里就可以在同一副图中展示 xff0c 简要记录代码 from torch utils tensorboard imp
  • Android Studio 查看当前显示的 activity

    在修复bug时 xff0c 首先需要定位到是哪个activity出现的问题 xff0c 这时可以使用adb工具 abd工具在SDK目录下的platform tools文件夹下 1 打开Android Studio的Terminal xff0
  • MyBatis:使用MyBatis Generator快速完成Springboot项目数据层开发

    使用场景 当我们使用Springboot整合Mybatis时 xff0c 我们就需要为数据库中的每一个表分别写出 xff1a 实体类Mapper xml文件Mapper接口 如果数据库中有很多表 xff0c 这个过程就会非常的繁琐 而MyB
  • 【MediaSoup】mediasoup-sfu-cpp : demo 和MediaSoup实例

    MediaSoup mediasoup sfu cpp vs2022 构建 完成了构建 下面分析其线程模型 main 进程 创建一个独立server线程支持ws 作为一个oatpp的组件存在 D span class token punct
  • “jar中没有主清单属性”问题的解决方法

    今天想要把springboot项目打成jar包部署在服务器上 xff0c 但是在使用 java jar XXX 指令时遇到了 jar中没有主清单属性 的问题 在官网上看到这样一段话 xff0c 发现是因为pom文件里没有加上repackag
  • 《Java高并发程序设计》阅读笔记

    第一章 1 同步和异步 2 并发和并行 3 临界区 xff1a 表示一种公共资源 xff0c 可以被多个线程使用 xff0c 但是每一次只能有一个线程使用它 xff0c 一旦临界区资源被占用 xff0c 其他线程想要使用这个资源就必须等待