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并发编程
高并发编程系列:并发容器的原理,7大并发容器详解、及使用场景
并发容器的由来在
Java并发编程
中,经常听到Java集合类,同步容器、并发容器,那么他们有哪些具体分类,以及各自之间的区别和优劣呢?
晴栀吖
·
2023-08-17 06:03
Java并发编程
:深入剖析ThreadLocal
想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。以下是本文目录大纲:一.对ThreadLocal的理解二.深入解析ThreadLocal类三.ThreadLocal的应用场景若有不正之处
03ca2835cf70
·
2023-08-17 02:32
Java并发编程
(七)实践[生产者-消费者]
生产者-消费者概述生产者消费者问题,也称有限缓冲问题,是一个多线程同步问题的经典案例。该问题描述了共享固定大小缓冲区的两个线程在多线程开发中,如果生产者(生产数据的线程)处理速度很快,而消费者(消费数据的线程)处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。如果消费者的处理能力大于生产者,那么消费者就必须等待生产者。为了解决这种生产消费能力不均衡的问题,便有了生产者和消费者模式具
奉先节度使
·
2023-08-16 04:57
#
Java
java
Java并发编程
(五)线程同步 下 [CAS/原子类/同步容器类/同步工具类]
CAS概述CAS全称为Compare-And-Swap。它是一条CPU的原子指令,是硬件对于并发操作共享数据的支持。其作用是CPU在某个时刻比较两个值是否相等核心原理:在操作期间CAS先比较下主存中的值和线程中工作内存中的值是否相等,如果相等才会将主存中的值更新为新值,不相等则不交换(如果不相等则会一直通过自旋方式尝试更新值)CAS指令存在如下问题:ABA问题:两个时刻比较值都会存在ABA问题,原
奉先节度使
·
2023-08-16 04:27
#
Java
java
Java并发编程
(六)线程池[Executor体系]
概述在处理大量任务时,重复利用线程可以提高程序执行效率,因此线程池应运而生。它是一种重用线程的机制,可以有效降低内存资源消耗提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行线程池可以帮助我们更好地管理线程的生命周期和资源使用,避免线程频繁地创建和销毁带来的性能问题同时,线程池还可以提供一些额外的功能,例如线程池的大小控制、线程池的任务队列、线程池的拒绝策略等。线程池中通常维护一
奉先节度使
·
2023-08-16 04:26
#
Java
java
转载】
Java并发编程
系列04 | Java内存模型详解
文章见:【原创】
Java并发编程
系列03|重排序-可见性和有序性问题根源那么,作为从最开始就支持并发的语言,Java是如何解决这些核心问题的呢?
大锤强无敌
·
2023-08-16 03:38
JAVA多线程—Executor
这里借用《
Java并发编程
的艺术》提到的来说一下使用线程池的好处:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。
Zak1
·
2023-08-16 01:18
java并发编程
(一)缓存一致性协议
多线程环境下存在的问题缓存一致性问题,指令重拍问题,可见性,有序性,缓存一致性问题在多处理器系统中,每个处理器都有自己的高速缓存,而它们又共享同一主内存(MainMemory)。基于高速缓存的存储交互很好地解决了处理器与内存的速度矛盾,但是也引入了新的问题:缓存一致性(CacheCoherence)。当多个处理器的运算任务都涉及同一块主内存区域时,将可能导致各自的缓存数据不一致的情况,如果真的发生
胡志强
·
2023-08-16 01:03
Java并发编程
:CAS和AQS
一、什么是CASCAS(CompareAndSwap),即比较并交换。是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数————内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。无论哪种情况,它都会在CAS指令之前返回该位置的值。CAS有效地说明了“我认为位置V应该包含值A;如果包
程序员116号
·
2023-08-15 11:43
Java并发编程
之验证volatile指令重排-理论篇
Java并发编程
之验证volatile指令重排-理论篇Java并发包下的类中大量使用了volatile关键字。
凯哥Java
·
2023-08-15 04:06
Java并发编程
的艺术_Conc
Java并发编程
的艺术1并发编程的挑战1.1上下文切换即使是单核处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制。
silverbo1
·
2023-08-14 23:54
java并发编程的艺术
java
并发编程
JUC线程池的实战问题 - 线程池参数应该如何配置?
在《
Java并发编程
实战》一书中,作者BrianGoetz等人指出,线程池的规模应该根据任务类型和计算密集度来确定,对于CPU密集型任务,应该将核心线程数设置为处理器核心数加1或者2;对于I/
@Autowire
·
2023-08-13 14:08
JUC面试题汇总
java
分布式定时任务系列5:XXL-job中blockingQueue的应用
传送门分布式定时任务系列1:XXL-job安装分布式定时任务系列2:XXL-job使用分布式定时任务系列3:任务执行引擎设计分布式定时任务系列4:任务执行引擎设计续
Java并发编程
实战1:java中的阻塞队列引子这篇文章的主要目不是讨论
kobe_t
·
2023-08-13 06:39
#
分布式调度
java
Java并发编程
(四)线程同步 中 [AQS/Lock]
概述Java中可以通过加锁,来保证多个线程访问某一个公共资源时,资源的访问安全性。Java提出了两种方式来加锁第一种是我们上文提到的通过关键字synchronized加锁,synchronized底层托管给JVM执行的,并且在java1.6以后做了很多优化(偏向锁、自旋、轻量级锁),使用很方便且性能也很好,所以在非必要的情况下,建议使用synchronized做同步操作;第二种是本文将要介绍的通过
奉先节度使
·
2023-08-12 23:33
#
Java
java
Java并发编程
(一)多线程基础概念
概述多线程技术:基于软件或者硬件实现多个线程并发执行的技术线程可以理解为轻量级进程,切换开销远远小于进程在多核CPU的计算机下,使用多线程可以更好的利用计算机资源从而提高计算机利用率和效率来应对现如今的高并发网络环境并发编程核心三要素原子性原子,即一个不可再被分割的颗粒。在Java中原子性指的是一个或多个操作要么全部执行成功要么全部执行失败有序性程序执行的顺序按照代码的先后顺序执行。(处理器可能会
奉先节度使
·
2023-08-12 23:03
#
Java
java
Java并发编程
(二)并发理论[JMM/重排序/内存屏障/Happens-Before 规则]
JMM(Java内存模型)概述JMM即Java内存模型(JavaMemoryModel),是一种抽象的概念,并不真实存在,JMM描述的是一组规则或规范,通过这组规范定义了程序中各个变量的访问方式Java内存模型中规定所有变量都存储在主内存,主内存是共享内存区域,所有线程都可以访问,但线程对变量的操作必须在工作内存中进行,所以首先要将变量从主内存拷贝的自己的工作内存空间,然后对变量进行操作,操作完成
奉先节度使
·
2023-08-12 23:03
#
Java
java
Java并发编程
(三)线程同步 上[synchronized/volatile]
概念当使用多个线程来访问同一个数据时,将会导致数据不准确,相互之间产生冲突,非常容易出现线程安全问题,比如多个线程都在操作同一数据,都打算修改商品库存,这样就会导致数据不一致的问题。所以我们通过线程同步机制来保证线程安全,加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,从而保证了该变量的唯一性和准确性。线程同步本质就是“排队“,多个线程之间要排队,然后一个一个对共享资源进行操作,而不是
奉先节度使
·
2023-08-12 23:30
#
Java
java
Java并发编程
:Callable、Future和FutureTask
在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。而自从Java1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。今天我们就来讨论
小小哭包
·
2023-08-12 23:40
开发技巧经验分享
java
开发语言
26.Netty源码之ThreadLocal
ThreadLocal可以理解为线程本地变量,它是
Java并发编程
中非常重要的一个类。
然而,然而
·
2023-08-11 15:22
.net
python
开发语言
AbstractQueuedSynchronizer 队列同步器源码分析
(摘自《
Java并发编程
的艺术》)我们知道获取同步状态有独占和共享两种模式,本文先针对独占模式进行分析。变量定义privatetransientvolatileNodehead;head
断风雨_2669
·
2023-08-11 06:23
线程池的getPoolSize()方法只增不减?
在《
Java并发编程
的艺术》第九章9.2.5节中,对线程池的参数监控方法有以下描述:getPoolSize:线程池的线程数量。如果线程池不销毁的话,线程池里的线程不会自动销毁,所以这个大小只增不减。
Divenier
·
2023-08-11 02:02
【
Java并发编程
】再现ABA问题与解决ABA问题
文章目录1.什么是ABA问题2.如何解决ABA问题1.什么是ABA问题如果另一个线程把值A,先修改为B,再修改为A。当前线程看到的值还是A,并不知道值中间是否发生过变化。这就是ABA问题。举个:在你非常渴的情况下你发现一个盛满水的杯子,你一饮而尽。之后再给杯子里重新倒满水。然后你离开,当杯子的真正主人回来时看到杯子还是盛满水,他当然不知道是否被人喝完重新倒满。我们考虑下面一种ABA的情况:在多线程
Fire Fish
·
2023-08-10 06:33
java
java
开发语言
【
Java并发编程
】使用CompletableFuture最佳实践
文章目录1.什么是CompletableFuture2.为什么需要CompletableFuture3.使用CompletableFuture创建类接续类(thenXxx)4.使用CompletableFuture的一般范式CompletableFuture是Future的增强版,是多线程开发的利器。本文通俗易懂的介绍了CompletableFuture的用法,最后祭出CompletableFut
Fire Fish
·
2023-08-10 05:56
java
java
【连载】第3章-3.1.2-4可见性(long在多线程下不具有原子性)
《
JAVA并发编程
实战》解读【连载】第3章-3.1.2-4可见性回顾:上一节聊了共享变量,如果多线程共有,可能会导致失效的风险,增加synchronized保护后,可以避免风险的发生,这一节聊一聊可见性的其他问题和解决方式
可爱猪猪
·
2023-08-09 13:14
Java并发之原子变量及CAS算法-下篇
Java并发之原子变量及CAS算法-下篇概述本文主要讲在
Java并发编程
的时候,如果保证变量的原子性,在JDK提供的类中式怎么保证变量原子性的呢?。
凯哥Java
·
2023-08-09 08:06
Java并发编程
之顺序一致性
如果程序是正确同步的,程序的执行将具有顺序一致性(SequentiallyConsistent)——即程序的执行结果与该程序在顺序一致性内存模型中的执行结果相同。同步,即排队。同一时刻,只能有一个线程和内存交互!!顺序一致性内存模型两大特性一个线程中的所有操作必须按照程序的顺序来执行。(不管程序是否同步)所有线程都只能看到一个单一的操作执行顺序。在顺序一致性内存模型中,每个操作都必须原子执行且立刻
yYahoo~
·
2023-08-09 02:45
并发编程
Java
java
并发——线程的生命周期和状态
文章目录Java线程在运行的生命周期中的指定时刻只可能处于下面6种不同状态的其中一个状态(图源《
Java并发编程
艺术》4.1.4节)。
挨打且不服66
·
2023-08-08 15:16
java笔记整理
java
Java 编程之美:并发编程高级篇,必须码住了!
前言借用
Java并发编程
实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了。
Java喵
·
2023-08-08 09:58
Java并发编程
实战
线程安全性一个对象是否线程安全,取决于它是否被多个线程访问Java的同步机制关键字是synchronized,它提供了一种独占的加锁方式,但“同步”这个术语还包括volatile类型的变量,显式锁以及原子变量由于不恰当的执行时序而出现不正确的结果这种情况成为:静态条件(racecondition,这里的condition翻译成情况更合适)大多数竞态条件的本质:基于一种可能失效的观察结果做出判断或者
官大航
·
2023-08-08 01:18
Java并发编程
:什么是CAS?这回总算知道了
无锁的思想众所周知,Java中对并发控制的最常见方法就是锁,锁能保证同一时刻只能有一个线程访问临界区的资源,从而实现线程安全。然而,锁虽然有效,但采用的是一种悲观的策略。它假设每一次对临界区资源的访问都会发生冲突,当有一个线程访问资源,其他线程就必须等待,所以锁是会阻塞线程执行的。当然,凡事都有两面,有悲观就会有乐观。而无锁就是一种乐观的策略,它假设线程对资源的访问是没有冲突的,同时所有的线程执行
鄙人薛某
·
2023-08-07 23:32
Spring Bean如何保证并发安全
这样每次从容器中获取到的Bean就是一个新的实例,避免了多线程共享同一个对象实例的问题.2.不改变Bean作用域的情况下,可以避免在Bean中存可变状态的声明,尽量使用局部变量或使用线程安全的数据结构.3.使用
Java
*郑*
·
2023-08-07 15:36
面试
spring
java
设计模式(2018.9.28)
1.3线程安全的懒汉模式:内部类的单例模式(
java并发编程
推荐的单例模式创建方式:内部类Holder)。
瑟闻风倾
·
2023-08-07 00:40
Java并发编程
:线程池的使用
如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。
会java的赵恒
·
2023-08-06 18:09
【笔记】
Java并发编程
--Executors
为什么不建议使用Executors创建线程池分析不建议使用Executors来创建线程池,主要是有两大原因第一个是问题回溯的问题,使用Executors都可以使用默认的情况,无法用户自定义线程名称不利于排查问题,第二个原因也是最主要原因就是线程池的队列长度太长在这种情况下可能会导致往队列中不停的添加任务,最终在没有达到队列上线的情况下先把服务器运行的内存资源耗尽导致OOM通过直接使用ThreadP
TaiKuLaHa
·
2023-08-06 15:04
Java
笔记
Java并发编程
第一弹
1、线程的创建创建线程的方式有两种,第一种是通过继承Thread类,重写run方法;第二种是通过实现Runnable接口通过源码发现,创建线程只有一种方式那就是构造Thread类,而实现线程的执行单元则有两种方式,第一种是重写Thread类的run方法,第二种是实现Runnable接口的run方法,并且将Runnable实例用作构造Thread的参数。1.2、拓展Thread类的run方法是不能和
hellotqq
·
2023-08-04 23:46
java并发编程
java
多线程
并发编程
开篇词
作为一名java小白来说,深入学习
java并发编程
和JVM原理是成为java大牛的毕经之路。而自己从一年前开始零零碎碎地接触JUC,并在一些业务场景下使用它们。
大风过岗
·
2023-08-03 14:35
【漫画】
JAVA并发编程
之并发模拟工具
上一节【漫画】
JAVA并发编程
三大Bug源头(可见性、原子性、有序性)我们聊了聊并发编程的三个bug源头,这还没开始进入并发世界,胖滚猪就遇到了难题。。
胖滚猪学编程
·
2023-08-03 12:31
CAS操作——
Java并发编程
Java并发编程
中CAS操作需要输人两个数值,一个旧值(期望操作前的值)和一个新值,在操作期间先比较旧值有没有发生变化,如果没有发生变化,才交换成新值,发生了变化则不交换。
yYahoo~
·
2023-08-03 04:04
并发编程
Java
java
开发语言
JAVA并发浅析
Java并发编程
是指在多线程环境下,同时执行多个任务,从而提高程序的执行效率和性能。
爱学习的卢生
·
2023-08-02 07:30
java
开发语言
运维
学习
服务器
Java并发编程
实战——基础知识2
文章目录4对象的组合4.1设计线程安全的类4.1.1收集同步需求4.1.2依赖状态的操作4.1.3状态的所有权4.2实例封闭4.2.1Java监视器模式4.2.2示例:车辆追踪4.3线程安全性的委托4.3.1示例:基于委托的车辆追踪器4.3.2独立的状态变量4.3.3当委托失效时4.3.4发布底层的状态变量4.3.5示例:发布状态的车辆追踪器4.4在现有的线程安全类中添加功能4.4.1客户端加锁机
kaikai_sk
·
2023-08-02 05:48
#
Java并发编程
java
开发语言
Java并发编程
实战——基础知识
文章目录1基础知识1.3线程带来的风险1.3.1安全性问题1.3.2活跃性问题2线程安全性2.2原子性2.2.1竞态条件2.2.1数据竞争2.3加锁机制2.3.1内置锁2.4用锁来保护状态3对象的共享3.1可见性3.1.1失效数据3.1.2非原子的64位操作3.1.3加锁与可见性3.1.4volatile变量3.2发布与逸出3.3线程封闭3.3.1Ad-hoc线程封闭3.3.2栈封闭3.3.3Th
kaikai_sk
·
2023-08-02 05:18
#
Java并发编程
java
Java高并发--AQS
Java高并发--AQS主要是学习慕课网实战视频《
Java并发编程
入门与高并发面试》的笔记AQS是AbstractQueuedSynchronizer的简称,直译过来是抽象队列同步器。
weixin_30342827
·
2023-08-01 22:05
《
Java并发编程
实战》读书笔记五:深入理解同步实现
一、构建自定义的同步工具1.内置的条件队列条件队列就如同烤面包机上的面包已好的铃声。如果你正在听着它,当面包烤好后你可以立即注意到,并且放下手头的事情开始品尝面包,如果你没有听见它,你会错过通知消息,但是回到厨房后还是看到面包的状态,如果已经烤完,就取面包,如果未烤完,就再次监听铃声。条件队列中的元素是一个个正在等待相关条件的线程。每一个对象都可以作为一个条件队列,并且Object的wait,no
小七奇奇
·
2023-08-01 15:26
[
Java并发编程
实战]构建一个高效可复用缓存程序(含代码)
一屋不扫何以扫天下?———《后汉书·陈蕃传》它告诉我们,要从一点一滴的小事开始积累,才能做成一番大事业。PS:如果觉得本文有用的话,请帮忙点赞,留言评论支持一下哦,您的支持是我最大的动力!谢谢啦~这几天更新了这么多篇文章,其实这些都是并发编程中最基础的知识。现在,我们是时候利用这些知识来写一个小程序了。本篇文章就来介绍如何构建一个用来存储计算结果的高效、可伸缩高速缓存,虽然简单,但也可以说算是对前
seaicelin
·
2023-08-01 01:35
Java并发编程
解析 | 基于JDK源码解析Java领域中并发锁之ReentrantReadWriteLock锁的设计思想与实现原理 (二)
苍穹之边,浩瀚之挚,眰恦之美;悟心悟性,善始善终,惟善惟道!——朝槿《朝槿兮年说》写在开头在并发编程领域,有两大核心问题:一个是互斥,即同一时刻只允许一个线程访问共享资源;另一个是同步,即线程之间如何通信、协作。主要原因是,对于多线程实现实现并发,一直以来,多线程都存在2个问题:线程之间内存共享,需要通过加锁进行控制,但是加锁会导致性能下降,同时复杂的加锁机制也会增加编程编码难度过多线程造成线程之
朝槿木兮
·
2023-07-31 16:34
java并发编程
实战之java内存模型
什么是内存模型?为什么需要它假设一个线程为变量aVariable赋值:aVariable=3;内存模型需要解决这个问题:在什么条件下,读取aVariable的线程将看到3?这听起来似乎是个愚蠢的问题,但如果缺少同步,那么将会有许多因素使得线程无法立即甚至永远,看到另一个线程的操作结果。在编译器生成的指令顺序,可以与源代码中的顺序不同,此外编译器还会把变量保存在寄存器而不是内存中,处理器可以采用乱序
tracy_668
·
2023-07-31 14:53
怎么学习
Java并发编程
相关技术? - 易智编译EaseEditing
学习
Java并发编程
可以通过多种方式进行,包括但不限于以下几种:在线教程和学习平台:网上有许多免费和付费的
Java并发编程
教程和学习平台,如Coursera、Udemy、edX、Codecademy等。
易智编译
·
2023-07-29 20:44
学习推荐
学习
java
开发语言
职场和发展
科技
java并发编程
不可缺少的API介绍
java.util.concurrent包1.1Executors线程池Executor:接口,仅有一个方法为execute(Runnable)ExecutorService:Executor的子接口,扩展了Executor的方法,如submit/shutdown等。Executors:工厂类,提供生成各种线程池的静态方法ScheduledExecutorService:ExecutorServi
酷拼车
·
2023-07-29 03:59
Java 多线程开发
如果你觉得此文很简单,那推荐你看看Java并发包的的线程池(
Java并发编程
与技术内幕:线程池深入理解),或者看这个专栏:
Java并发编程
与技术内幕。
jiayifang1
·
2023-07-29 01:18
Java并发编程
面试题
目录一、线程、进程、程序二、线程状态三、线程的七大参数四、线程有什么优缺点?五、start和run方法有什么区别?六、wait和sleep的区别?七、lock与synchronized的区别八、Volatile关键字是线程安全的吗?底层原理是什么?九、synchronized作用和底层原理?十一、ThreadLocal是线程安全的吗?底层原理是什么?会存在内存泄露吗?十二、HashMap和Conc
fighting!899
·
2023-07-28 17:05
java
开发语言
jvm
上一页
9
10
11
12
13
14
15
16
下一页
按字母分类:
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
其他