E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
Java并发编程之道
死锁、活锁和饥饿是什么意思?
写在前面本文隶属于专栏《100个问题搞定
Java并发
》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
Shockang
·
2023-09-03 14:01
Java并发
java
并发
Java并发
-重入锁ReentrantLock
基础重入锁:一个线程对同一个锁资源可以重复获取(如synchronized关键字)ReentrantLock是可重入锁,并且支持获取锁时的公平与非公平选择。ReentrantLock默认为非公平锁,这是出于性能考虑(对于非公平锁,一个刚释放锁的线程很大概率可以再次获得该锁,而不用去排队,减少上下文切换次数)。而公平锁总是会让你到同步队列走一遭,即使你刚释放了锁,然后立马请求锁。即公平锁的实现是以线
油多坏不了菜
·
2023-09-03 09:32
【死磕
Java并发
】—– J.U.C之重入锁:ReentrantLock
ReentrantLock,可重入锁,是一种递归无阻塞的同步机制。它可以等同于synchronized的使用,但是ReentrantLock提供了比synchronized更强大、灵活的锁机制,可以减少死锁发生的概率。API介绍如下:一个可重入的互斥锁定Lock,它具有与使用synchronized方法和语句所访问的隐式监视器锁定相同的一些基本行为和语义,但功能更强大。ReentrantLock将
Zal哥哥
·
2023-09-03 07:26
java并发
编程-原子类
原子类原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何线程上下文切换。原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分,将整个操作视作一个整体是原子性的核心特征。而java.util.concurrent.atomic下的类,就是具有原子性的类,可以原子性地执行添加、递增、递减等操作。比如之前多线程
wangpeng123
·
2023-09-02 21:44
并发编程之:AQS源码解析
在
Java并发
编程中,经常会用到锁,除了Synchronized这个JDK关键字以外,还有Lock接口下面的各种锁实现,如重入锁ReentrantLock,还有读写锁ReadWriteLock等,他们在实现锁的过程中都是依赖与
小黑说Java
·
2023-09-02 20:57
技术人员该读什么书?--- 并发编程篇
本期推荐1、《
Java并发
编程实战》推荐理由:这本书被誉为被誉为
Java并发
编程的圣经,本书深入浅出地介绍了Java线
·
2023-09-02 18:14
后端
技术人员该读什么书?--- 并发编程篇
本期推荐1、《
Java并发
编程实战》推荐理由:这本书被誉为被誉为
Java并发
编程的圣经,本书深入浅出地介绍了Java线
·
2023-09-02 18:43
后端
java并发
系列-CopyOnWriteArrayList
java并发
系列-CopyOnWriteArrayList实现原理CopyOnWriteArrayList容器是写时复制容器,当我们往容器中添加元素的时候,不是直接往当前容器中添加,而是将以前的容器复制一份
程序员fly
·
2023-09-02 02:30
并发
系统设计
mysql
数据库
java
Android volatile 原理。
在《
Java并发
编程:核心理论》一文中,我们已经提到可见性、有序性及原子性问题,通常情况下我们可以通过Synchronized关键字来解决这些个问题,不过如果对Synchonized原理有了解的话,应该知道
ZSGZ_AD
·
2023-09-01 20:03
java并发
编程(二)-- 用户线程和内核线程
什么是线程现代操作系统在运行一个程序时,会为其创建一个进程。例如,启动一个Java程序,操作系统就会创建一个Java进程。现代操作系统调度CPU的最小单元是线程,也叫轻量级进程(LightWeightProcess),在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。处理器在这些线程上高速切换,让使用者感觉到这些线程在同时执行。线程的实现可
胡志强
·
2023-09-01 16:22
2023年Java核心技术第十一篇(篇篇万字精讲)
目录二十一.
Java并发
包提供了哪些并发工具类21.1典型回答21.1.1CountDownLatch21.1.2CyclicBarrier21.1.2.1例子:21.1.2.2输出结果:21.1.2.3
平凡@之路
·
2023-09-01 11:07
java
开发语言
面试必问的CAS,你懂了吗?
概述CAS(Compare-and-Swap),即比较并替换,是一种实现并发算法时常用到的技术,
Java并发
包中的很多类都使用了CAS技术。
程序员囧辉
·
2023-09-01 07:21
Java并发
编程的简单理解
目录文章目录目录前言概念一、关于高并发大流量二、扩展1、Scale-up2、Scale-out缓存异步总结前言高并发系统的演进应该是循序渐进,以解决系统中存在的问题为目的和驱动力的。所以并不是所有的并发系统设计都要追求高流量,电商对其淘宝那种,IM对齐微信概念并发:同时拥有两个或者多个线程,如果程序在单核处理器上运行,多个线程交替得换入或者换出内存,这些线程是同时“存在”的,每个线程都处于执行过程
依嘫_吃代码
·
2023-08-31 23:34
java高级
java
Java 并发编程
Java并发
编程一、线程创建1.1继承Thread类1.2实现Runnable接口1.3实现Callable接口二、线程方法三、线程同步3.1锁3.1.1synchronized同步代码块同步方法3.1.2ReentrantLock3.1.3StampedLock3.2
呦,又写BUG呢
·
2023-08-31 20:08
Java
java
多线程
java并发
模型图,
Java并发
-JMM
摘要之前我们讲解过cpu多级缓存模型,但是对于JVM来说为了屏蔽掉各种操作系统跟各种硬件的差异,是各个操作系统和硬件数据读写原理一致性而引入了java内存模型JMM;思维导图本章节内容如下:内容JMM模型前言:JMM它是一个虚拟的东西,是一个抽象的概念;描述的是一组规范;抽象的就是cpu的多核缓存架构;为了实现java跨平台;屏蔽掉计算机硬件跟操作系统,保证在各个操作系统上读取数据的一致性。如下,
乔本大叔
·
2023-08-31 19:29
java并发模型图
Java 并发 - JMM理论基础
Java并发
-理论基础概述:计算机中最核心的组件是CPU、内存、磁盘(I/O设备),CPU的计算速度是非常快的,内存次之、最后是IO设备比如磁盘。
Heloise_yangyuchang
·
2023-08-31 19:56
java
开发语言
【
Java并发
】聊聊对象内存布局和syn锁升级过程
对象存储解析:一个空Object对象到底占据多少内存?对象内存布局MarkWord占用8字节,类型指针占用8个字节,对象头占用16个字节。好了,我们来看一下一个Object对占用多少空间,因为java默认是开启压缩的。所以在类开启压缩的时候,会自动填充4字节,所以就是16字节,而没有开启类压缩的也是16字节。syn锁升级synchronized锁:由对象头中的MarkWord根据锁标志位的不同而被
qxlxi
·
2023-08-31 16:29
#
并发编程
java
开发语言
【漫画】
JAVA并发
编程三大Bug源头(可见性、原子性、有序性)
原创声明:本文转载自公众号【胖滚猪学编程】某日,胖滚猪写的代码导致了一个生产bug,奋战到凌晨三点依旧没有解决问题。胖滚熊一看,只用了一个volatile就解决了。并告知胖滚猪,这是并发编程导致的坑。这让胖滚猪坚定了要学好并发编程的决心。。于是,开始了我们并发编程的第一课。序幕con2BUG源头之一:可见性刚刚我们说到,CPU缓存可以提高程序性能,但缓存也是造成BUG源头之一,因为缓存可以导致可见
胖滚猪学编程
·
2023-08-31 13:23
jvm与锁
今天是《面霸的自我修养》的第二弹,内容是
Java并发
编程中关于Java内存模型(JavaMemoryModel)和锁的基础理论相关的问题。
瞬间的醒悟
·
2023-08-31 12:29
java面试
python
开发语言
编程之道
:【软件工程实践】深入探讨软件开发生命周期和方法学
在当今数字时代,软件开发已经成为了我们生活的一部分。从移动应用到庞大的企业级系统,软件无处不在。然而,为了构建高质量、可维护的软件,软件工程实践显得至关重要。本文将深入探讨软件开发生命周期和方法学,以了解如何在项目中有效应用它们。软件开发生命周期软件开发生命周期是指从软件项目的概念阶段到最终交付和维护的整个过程。它包括以下阶段:需求分析:在这个阶段,开发团队与客户和利益相关者合作,明确项目的目标和
fans小知
·
2023-08-30 17:30
编程之道
软件构建
编程之道
:【软件工程实践】构建成功项目的最佳实践
在现代软件开发中,采用最佳实践是确保项目成功的关键之一。软件工程实践涵盖了项目的各个阶段,从需求分析到设计、实现和测试。本文将介绍这些阶段的最佳实践,以帮助确保您的软件项目按计划成功完成。1.需求分析阶段需求分析是软件开发的基石,因为它为整个项目奠定了基础。以下是需求分析阶段的最佳实践:清晰的需求文档:编写详细、清晰、可验证的需求文档是至关重要的。确保需求文档包含所有关键信息,包括功能、性能要求和
fans小知
·
2023-08-30 17:30
编程之道
软件构建
开发语言
编程之道
:【软件工程实践】文档编写、代码维护和项目管理的不可或缺
在现代软件开发中,软件工程实践是构建成功项目的关键要素。其中,文档编写、代码维护和项目管理三者的紧密协作至关重要。本文将强调这些方面的重要性,以帮助确保项目的成功交付和可持续发展。文档编写:项目的指南文档编写是软件工程实践的一个重要组成部分。以下是文档编写的重要性:清晰的需求文档:需求文档定义了项目的目标和功能。它是项目计划和开发的基础。清晰、详细的需求文档有助于开发团队全面了解项目需求,避免误解
fans小知
·
2023-08-30 17:30
编程之道
软件构建
开发语言
编程之道
:【代码重构】消除异味和坏味道,提升代码质量
在软件开发中,有时会遇到一些让人不爽的情况,代码也不例外。这些情况被称为“代码异味”或“坏味道”。它们可能表明代码存在问题,需要进行重构以提升质量和可维护性。本文将介绍代码异味和坏味道是什么,以及如何识别和解决它们。代码异味和坏味道是什么?代码异味是指在代码中存在的,虽然不一定是错误,但通常表明潜在问题或低质量设计的特征。异味可以使代码难以理解、扩展和维护。坏味道是更深层次的代码问题,通常会导致更
fans小知
·
2023-08-30 17:48
编程之道
软件构建
开发语言
重构
[Java]重学Java-原子类
JUC包下的原子类JUC就是大名鼎鼎的
java并发
包,我们今天来看看基于非阻塞性算法的CAS封装的原子类.JUC下有AtomicInteger、AtomicLong、AtomicBoolean等类,UML
AbstractCulture
·
2023-08-30 04:45
编程之道
:【软件构建技巧】提高效率与质量的关键实践
在现代软件开发中,构建过程是整个开发周期中的一个关键环节。为了提高效率和软件质量,开发团队采用了一系列关键实践,包括构建工具、自动化测试和版本控制等。本文将探讨这些实践以及它们在软件构建中的重要性。1.构建工具:简化复杂性构建工具是开发人员的得力助手,可以大大简化复杂的构建过程。它们可以执行一系列任务,如代码编译、资源压缩、依赖管理和部署自动化。常见的构建工具包括ApacheMaven、Gradl
fans小知
·
2023-08-30 00:05
编程之道
软件构建
编程之道
:【代码重构】提升代码质量的关键一步
在软件开发的旅程中,不仅仅是代码的编写,还包括了代码的维护和改进。代码重构是其中的一个重要环节,它强调的是改进代码的内部结构,使其更容易理解、维护和扩展。本文将探讨代码重构对于改进代码质量的重要性。代码重构是什么?代码重构是一种在不改变软件外部行为的前提下,改进代码内部结构、提高代码质量的过程。它不是修复bug或添加新功能,而是通过重新组织、重写或简化代码,使其更加清晰、高效,减少复杂性。为什么代
fans小知
·
2023-08-30 00:05
编程之道
重构
编程之道
:【软件构建技巧】构建过程和持续集成的重要性
软件开发是一门复杂的艺术,其中构建过程和持续集成是关键组成部分。构建是将源代码转化为可执行软件的过程,而持续集成是确保代码的不断集成、构建和测试的实践。在本文中,我们将深入探讨这两个关键概念的重要性以及它们对软件开发的价值。构建过程的重要性:构建是将代码转化为可执行软件的过程。这个过程不仅仅是将源代码编译成可运行的程序,还包括了许多其他任务,如资源压缩、代码优化、依赖管理等。构建过程的重要性在于:
fans小知
·
2023-08-30 00:34
编程之道
软件构建
ci/cd
编程之道
:【软件构建技巧】代码评审和团队协作的威力
在现代软件开发中,构建高质量的软件是至关重要的目标。高质量的软件不仅仅意味着它能够如期交付,还意味着它具备稳定性、可维护性和可扩展性。为了实现这一目标,代码评审和团队协作是两个至关重要的实践,它们共同为构建高质量软件提供了坚实的基础。代码评审:挑剔的眼光代码评审是一种系统性的方法,通过检查和审查代码来发现和修复问题。这个过程不仅仅是发现语法错误,还包括对代码结构、性能、可读性和最佳实践的审查。下面
fans小知
·
2023-08-29 21:36
编程之道
软件构建
编程之道
:【性能优化】提升软件效率的原则和方法
在今天的数字化世界中,软件性能对于用户体验和应用程序的成功至关重要。无论是网页加载速度、移动应用的响应时间还是大型服务器的处理能力,性能优化都扮演着关键的角色。本文将介绍性能优化的基本原则和方法,帮助开发人员提升软件效率。性能优化的原则:测量和分析:要优化性能,首先需要了解当前的性能状况。使用性能监测工具和分析技术来测量关键性能指标,如响应时间、负载和资源利用率。这些数据将为优化提供指导。设定明确
fans小知
·
2023-08-29 21:36
编程之道
性能优化
编程之道
:【性能优化】深入探讨时间复杂度和空间复杂度
性能优化是软件开发中至关重要的一个方面,它旨在提高程序的执行速度和资源利用效率。在优化过程中,时间复杂度和空间复杂度是两个关键的概念,它们帮助开发人员更好地理解和改进算法和数据结构,以提高程序的性能。时间复杂度:时间复杂度是衡量算法执行时间随输入规模增加而增加的度量。通常以大O符号(O)表示,它描述了算法执行时间与输入规模之间的关系。常见的时间复杂度包括:O(1):常数时间复杂度,表示算法的执行时
fans小知
·
2023-08-29 21:36
编程之道
开发语言
代码规范
软件构建
编程之道
:【性能优化】提高软件效率的实际建议和避免常见陷阱
在今天的数字化世界中,软件性能是应用程序成功的关键之一。无论是网页加载速度、移动应用的响应时间还是后端服务器的处理速度,性能都直接影响着用户满意度。在追求高性能时,开发人员需要采取一系列实际建议,同时避免常见的陷阱。1.测量性能:建议:首先,测量你的应用程序性能。使用性能分析工具和监控系统来收集数据,了解瓶颈在哪里。陷阱:不测量性能,或只是根据猜测来进行优化。没有准确的性能数据,你将无法知道哪里需
fans小知
·
2023-08-29 21:04
编程之道
性能优化
java的wait_一文秒懂 Java wait() 和 notify() 方法
本文,我们来讲解下
Java并发
中的基础的基础,核心的核心,
Java并发
编程中的最基本的机制之一-「线程同步」为了方便你理解并发编程中的各种概念和术语,我们首先会来一阵扫盲,讨论一些基本的并发相关术语和方法
蒋张琦
·
2023-08-29 16:22
java的wait
多线程及线程安全问题详解(全)
学前小故事深入线程
Java并发
集合深入锁机制Java线程池cpu与核心高并发解决方案学前小故事1.一切要从CPU说起2.从CPU到操作系统3.从单核到多核,如何充分利用多核4.从进程到线程5.线程与内存
Ferao
·
2023-08-29 12:08
基础线程安全理解
多线程
多线程有用吗
多线程提高程序性能
多线程生命周期
【JUC高并发编程】—— 初见JUC
一、JUC概述什么是JUCJUC是
Java并发
编程的缩写,指的是Java.util.concurrent即Java工具集下的并发编程库【说白了就是处理线程的工具包】JUC提供了一套并发编程工具,这些工具是
Bow.贾斯汀
·
2023-08-29 05:44
Java并发编程
java
jvm
面试
juc
多线程
Java并发
机制的底层实现原理-对应
Java并发
编程的艺术第二章
volatile被volatile修饰的共享变量进行写操作的时候,字节码中会出现一个Lock前缀的指令。volatile的两条实现原则1、Lock前缀指令会引起处理器缓存会写到内存2、处理器缓存回写到内存会导致其他处理器的缓存无效这里其实就是缓存一致性协议的体现。volatile的优化追加字节的方式synchronized锁的对象分为三种:1、普通同步方法而言,锁是当前实例对象2、静态同步方法而言
于无声处写写写
·
2023-08-29 04:47
Java关于集合部分需要掌握的知识要点
它还包括在
Java并发
包中,阻塞接口以及它们的实现。集合框架的部分优点如下:使用核心
Zal哥哥
·
2023-08-29 03:03
5个案例和流程图让你从0到1搞懂volatile关键字
volatile随着硬件的提升,机器的核心数从曾经的单核变为多核,为了提升机器的利用率,现在的并发编程变得越来越重要,成为工作中、面试中的重中之重,而为了能够更好的理解、使用并发编程,就应该构建出自己的
Java
菜菜的后端私房菜
·
2023-08-29 02:15
Java并发编程
java
面试
Java并发
编程
并发编程线程前言进程与线程串行与并行同步与异步创建与线程运行方法一:直接newThread方法二:Runnable配合Thread方法三:FutureTask配合Thread原理之Thread与Runnable的关系原理之线程运行线程上下文切换(ThreadContextSwitch)常见方法interrupt方法详解模式之两阶段终止主线程与守护线程线程生命周期线程间转换共享模型之线程管理Sync
Neoooo、
·
2023-08-28 18:19
一
Java基础
java
spring
boot
jvm
【
java并发
编程的艺术读书笔记】Lock接口简介、Condition类的使用、可重入锁与读写锁
Lock接口简介Lock接口是用于实现线程同步的一种机制。它提供了比传统的synchronized关键字更灵活和可扩展的方式来管理多个线程对共享资源的访问。Lock接口的主要目标是解决synchronized关键字的一些限制,例如无法中断正在等待锁的线程、不能尝试获取锁而立即放弃等待、不能在等待一段时间后获取锁等等。Lock的特性Lock接口中的常用方法voidlock():获取锁,如果锁不可用,
Ez4Sterben
·
2023-08-28 16:34
读书笔记
java
开发语言
并发编程
Lock
可重入锁
读写锁
Condition
【
java并发
编程的艺术读书笔记】ConcurrentHashMap是如何保证线程安全的
ConcurrentHashMapHashMap的线程安全问题并发环境下HashMap可能会导致程序死循环,原因是put操作可能会使得HashMap中的链表结构成环,导致无法找到next节点,无限循环HashTable为什么效率低HashMap是使用synchronized来保证县城安全的,如果并发量非常高,那么会触发synchronized锁升级机制,成为重量级锁,性能严重降低Concurren
Ez4Sterben
·
2023-08-28 16:34
读书笔记
java
开发语言
HashMap
并发编程
Concurrent
分段锁
【
java并发
编程的艺术读书笔记】java中的并发工具类(CountDownLatch、CyclicBarrier、Semaphore、Exchanger)
CountDownLatchCountDownLatch允许一个或多个线程等待其他线程完成操作。CountDownLatch的构造函数接收一个int类型的参数作为计数器,如果你想等待N个点完成,这里就传入N。CountDownLatchc=newCountDownLatch(2);join用于让当前执行线程等待join线程执行结束。其实现原理是不停检查join线程是否存活,如果join线程存活则让
Ez4Sterben
·
2023-08-28 16:04
读书笔记
java
并发工具类
CountDownLatch
CyclicBarrier
Semaphore
Exchanger
并发编程
【
java并发
编程的艺术读书笔记】AQS队列同步器简介、实现自定义锁
AQS介绍AQS(AbstractQueuedSynchronizer)是
Java并发
包(java.util.concurrent)中一个重要的基础类,用于实现同步器(Synchronizer)的框架。
Ez4Sterben
·
2023-08-28 16:31
读书笔记
java
开发语言
并发编程
AQS
自定义锁
Java并发
工具包——BlockingQueue(二)
Java并发
工具包——BlockingQueue(二)上期讨论了一个简单的队列,使用队列做了一个生产者消费者小例子。这期分享另一个很有意思的队列:延迟队列。
icyage
·
2023-08-28 02:50
【
Java并发
】从simpleDateFormart聊聊threadlocal原理机制
SimpleDateFormatspublicstaticfinalSimpleDateFormatsimpleDateFormat=newSimpleDateFormat("yyyy-mm-ddHH:mm:ss");publicstaticDateparse(StringstringDate)throwsParseException{returnsimpleDateFormat.parse(st
qxlxi
·
2023-08-27 20:04
#
并发编程
java
python
开发语言
Java并发
工具类
JDK并发包中常用并发工具类:CountDownLatch、CyclicBarrier和Semaphore工具类提供了一种并发流程控制的手段;Exchanger工具类则提供了在线程间交换数据的一种手段。等待多线程完成的CountDownLatchCountDownLatch允许一个或多个线程等待其他线程完成操作。需求:解析一个Excel里多个sheet的数据,可以考虑使用多线程,每个线程解析一个s
Likelong~
·
2023-08-26 23:25
#
juc
java
开发语言
【一文读懂】
Java并发
- 锁升级原理
要明白锁的原理,首先要知道对象头Java对象头在Java中,一个对象一般由两部分组成:1、对象头;2、对象的成员变量信息在32位的虚拟机中:(1)普通对象的对象头长度64bit(8字节):其中的32bit是MarkWord,另外32位是KlassWord,如下:MarkWord(32bits)KlassWord(32bits)(2)数组对象的对象头长度96bit(12自己):除了MarkWord和
Fearless____
·
2023-08-26 09:44
Java并发
Java并发
java并发
编程小结
线程简介:线程是操作系统调度的最先单元,进程:线程=1:N关系,也就是说一个进程可以创建多个线程,至少包含一个线程。多线程可以最大限度的使用CPU和维护各线程之间的并发进行关系等。一、concurrent并发包locks部分:显式锁(互斥锁和速写锁)相关;atomic部分:原子变量类相关,是构建非阻塞算法的基础;executor部分:线程池相关;collections部分:并发容器相关;tools
程序大视界
·
2023-08-26 01:27
并发编程-CAS
Java并发
编程中,除了通过synchronized进行并发控制外,还可以通过CAS(CompareAndSet)的方式控制,大家熟悉的ReentrantLock内部实现大量采用CAS进行控制。
小三鹅
·
2023-08-26 00:37
这份
java并发
编程高级面试专栏,为你解忧!
三、并发编程高级面试专栏1、Synchronized用过吗?其原理是什么2这是一道Java面试中几乎百分百会问到的问题,因为没有任何写过并发程序的开发者会没听说或者没接触过Synchronized。Synchronized是由JVM实现的一种实现互斥同步的一种方式,如果你查看被Synchronized修饰过的程序块编译后的字节码,会发现,被Synchronized修饰过的程序块,在编译前后被编译器
套马杆的程序员
·
2023-08-25 21:32
《玩转
Java并发
工具、精通JUC、成为并发多面手》构建高性能缓存
引言《玩转
Java并发
工具、精通JUC、成为并发多面手》构建高性能缓存这部分的个人笔记。本节为单纯的实战,主要是把之前学习并发编程的知识点串起来。
·
2023-08-24 23:14
缓存设计java
上一页
17
18
19
20
21
22
23
24
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他