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并发编程指南
Java并发
编程之线程池详解
目录今日良言:不悲伤不彷徨有风听风有雨看雨一、简介二、相关代码1.线程池代码2.自定义实现线程池三、ThreadPoolExecutor类今日良言:不悲伤不彷徨有风听风有雨看雨一、简介首先来介绍一下什么是线程池,线程池是一种利用池化技术思想来实现的线程管理技术,主要是为了复用线程、便利地管理线程和任务并将线程的创建和任务的执行解耦开来。我们可以创建线程池来复用已经创建的线程来降低频繁创建和销毁线程
程序猿小马
·
2023-08-21 00:40
java
开发语言
java并发
与多线程(三):什么是锁
计算机的锁分类有很多种,本书并不打算详细介绍每种锁,而是通过对java.util.concurrent(JUC)包中的基础类的解析来说明锁的本质和特性。Java中常用锁实现的方式有两种。1、用并发包中的锁类并发包的类族中,Lock是JUC包的顶层接口,它的实现逻辑并未用到synchronized,而是利用volatile的可见性。先通过Lock来了解JUC包的一些基础类,如图所示:image.pn
姜小姜小
·
2023-08-19 20:15
【
Java并发
编程面试题(60道)】
toc
Java并发
编程面试题(60道)基础1.并行跟并发有什么区别?从操作系统的角度来看,线程是CPU分配的最小单位。并行就是同一时刻,两个线程都在执行。这就要求有两个CPU去分别执行两个线程。
唯时
·
2023-08-19 15:33
面试八股文积累
Java基础
java
面试
经验分享
2019年度总结
3.阅读《
Java并发
编程的艺术》《实战Java高并发程序设计》将零散的多线程知识点串在了一起4.花
半岛铁板
·
2023-08-19 13:26
随笔情感
2019年度总结
JUC闭锁与AQS技术在启动架构设计中的应用
JUC(Java.util.concurrent)是
Java并发
编程中的一个重要工具包,其中闭锁(CountDownLatch)是一种多线程同步工具,用于等待其他线程完成某个任务后再继续执行。
Android技术栈
·
2023-08-19 12:10
Android
开发
android
Android开发
程序员
移动开发
Android性能优化
juc
aqs
java并发
:synchronized锁详解
背景:在java多线程当中,我们总有遇到过多个线程操作一个共享数据时,而这个最后的代码执行结果并没有按照我们的预期一样得到正确的结果。此时我们就需要让代码执行在操作共享变量时,要等一个线程操作完毕时,另一个线程才能去操作这个共享变量。synchronized锁就能达到这样的目的。在线程A操作某个共享变量时,其他线程想要操作这个对像的话只能先处于等待状态,只有线程A操作完毕后其他线程才能操作这个变量
不是cv专业户
·
2023-08-19 11:56
java
开发语言
jvm
Java的AQS框架是如何支撑起整个并发库的
需要解决哪些场景下的问题互斥模式获取锁抢锁失败入队释放锁小总结共享模式获取共享资源释放共享资源唤醒丢失问题小总结混合模式获取写锁释放写锁获取读锁读锁是否应该阻塞释放读锁小总结栅栏模式等待递减计数条件变量模式等待条件成立条件满足,唤醒等待的节点小总结小结引言AQS抽象队列同步器(AbstractQueuedSynchronizer)作为
Java
Binary Oracle
·
2023-08-19 02:54
#
JUC
java
网络
开发语言
面试准备
1.HashMap&&CurrentHashMap源码分析HashMap源码解析
java并发
编程之ConcurrentHashMap2.常用开源框架中设计模式使用分析常用开源框架中设计模式使用分析23种设计模式
深度思考中
·
2023-08-18 23:44
java 并发 简单使用
文章目录概要代码概要
java并发
简单使用代码publicstaticfinalExecutorServiceEXECUTOR_GENERAL=newThreadPoolExecutor(100,1000,0L
系凌乱鹅
·
2023-08-18 16:24
java
java
开发语言
C#小轮子:扩展方法
文章目录相关资源前言扩展方法示例声明扩展方法使用扩展方法注意:相关资源相关资源扩展方法(C#
编程指南
)前言我们知道传统的方法增加是C#类继承。A->B->C。一层一层继承下去,然后重写父类的方法。
龙中舞王
·
2023-08-18 07:45
C#
小轮子
c#
数据库
开发语言
高并发编程系列:并发容器的原理,7大并发容器详解、及使用场景
并发容器的由来在
Java并发
编程中,经常听到Java集合类,同步容器、并发容器,那么他们有哪些具体分类,以及各自之间的区别和优劣呢?
晴栀吖
·
2023-08-17 06:03
Java并发
编程:深入剖析ThreadLocal
想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。以下是本文目录大纲:一.对ThreadLocal的理解二.深入解析ThreadLocal类三.ThreadLocal的应用场景若有不正之处
03ca2835cf70
·
2023-08-17 02:32
【死磕
Java并发
】—–J.U.C之阻塞队列:DelayQueue
DelayQueue是一个支持延时获取元素的无界阻塞队列。里面的元素全部都是“可延期”的元素,列头的元素是最先“到期”的元素,如果队列里面没有元素到期,是不能从列头获取元素的,哪怕有元素也不行。也就是说只有在延迟期到时才能够从队列中取元素。DelayQueue主要用于两个方面:缓存:清掉缓存中超时的缓存数据任务超时处理DelayQueueDelayQueue实现的关键主要有如下几个:可重入锁Ree
Zal哥哥
·
2023-08-16 14:17
Java并发
之:可见性问题引发的思考
前言本文将以一个java代码的可见性问题作为引子,一步步从硬件层面推导到软件层面,最后引出volatile的作用。文章篇幅较长,需耐心观看。这是作者学习完这块后自己做的整理,若存在描述有误、不清晰和混淆的情况,欢迎评论区及时指正批评!1.存在可见性问题的java代码publicclassVisableDemo{privatestaticbooleanstop=false;publicstaticv
·
2023-08-16 10:29
java并发
悲观锁和乐观锁
Java按照锁的实现分为乐观锁和悲观锁,乐观锁和悲观锁并不是一种真实存在的锁,而是一种设计思想,乐观锁和悲观锁对于理解Java多线程和数据库来说至关重要,那么本篇文章就来详细探讨一下这两种锁的概念以及实现方式。悲观锁悲观锁是一种悲观思想,它总认为最坏的情况可能会出现,它认为数据很可能会被其他人所修改,所以悲观锁在持有数据的时候总会把资源或者数据锁住,这样其他线程想要请求这个资源的时候就会阻塞,直到
·
2023-08-16 10:41
java并发悲观锁乐观锁
java并发
之并发工具类
一、CyclicBarrier1.1什么是CyclicBarrier它允许一组线程互相等待,直到到达某个公共屏障点(commonbarrierpoint)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时CyclicBarrier很有用。因为该barrier在释放等待线程后可以重用,所以称它为循环的barrier。通俗点讲就是:让一组线程到达一个屏障时被阻塞,直到最后一个线程到达
这一刻_776b
·
2023-08-16 09:19
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并发
| 常见线程安全容器
文章目录简介一、Hash表1、ConcurrentHashMap1.1内部实现原理1.2并发操作方法1.3ConcurrentHashMap与Hashtable的比较二、集合2、CopyOnWriteArrayList2.1内部实现原理2.2Copy-On-Write(COW)设计思想2.3实操三、Map3、ConcurrentSkipListMap3.1跳表(SkipList)3.2并发操作方法
夏诗曼CharmaineXia
·
2023-08-15 17:04
JAVA
java
安全
开发语言
一文吃透
Java并发
高频面试题
内容摘自我的学习网站:topjavaer.cn分享50道
Java并发
高频面试题。线程池线程池:一个管理线程的池子。为什么平时都是使用线程池创建线程,直接new一个线程不好吗?
·
2023-08-15 16:19
后端java
Java并发
编程:CAS和AQS
一、什么是CASCAS(CompareAndSwap),即比较并交换。是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数————内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。无论哪种情况,它都会在CAS指令之前返回该位置的值。CAS有效地说明了“我认为位置V应该包含值A;如果包
程序员116号
·
2023-08-15 11:43
Java并发
之ReentrantLock
AQSAQS(AbstractQueuedSynchronizer):抽象队列同步器,是一种用来构建锁和同步器的框架。在是JUC下一个重要的并发类,例如:ReentrantLock、Semaphore、CountDownLatch、LimitLatch等并发都是由AQS衍生出来的。理解CLH队列是一种基于链表的可扩展,高性能,公平的自旋锁。它的队列中每个节点等待前驱节点释放锁,当前置节点执行完成,
qq_27502511
·
2023-08-15 05:21
java
开发语言
Java 并发编程与CAS基本原理
一、
Java并发
基础知识Java里的程序天生就是多线程的,那么有几种新启线程的方式?
sziitjin
·
2023-08-15 05:19
java
android
java
开发语言
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
并发编程
WebGL入门
WebGL
编程指南
一、WebGL基本认识WebGL(WebGraphicsLibrary)是一个光栅化引擎,它可以根据你的代码绘制出点,线和三角形。
一个笑点低的妹纸
·
2023-08-14 20:40
34张架构史上最全技术知识图谱
1.2Java架构师图谱1.3微服务架构秘籍1.4一致性图谱1.5互联网大流量的方法1.6安全秘籍1.7阿里巴巴常用小框架1.8架构方法论图谱1.9设计模式秘籍图谱22.1JVM虚拟机垃圾回收图谱2.2
Java
程序员BUG
·
2023-08-14 18:23
【死磕
Java并发
】-----深入分析synchronized的实现原理
记得刚刚开始学习Java的时候,一遇到多线程情况就是synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字“同步”,也成为了我们解决多线程情况的百试不爽的良药。但是,随着我们学习的进行我们知道synchronized是一个重量级锁,相对于Lock,它会显得那么笨重,以至于我们认为它不是那么的高效而慢慢摒弃它。诚然,随着JavsSE1.
Zal哥哥
·
2023-08-13 22:20
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
开发语言
第三篇|Spark SQL
编程指南
在《第二篇|SparkCore
编程指南
》一文中,对Spark的核心模块进行了讲解。
大数据技术与数仓
·
2023-08-12 13:47
Java并发
之ReentrantLock
一、什么是AQS?AQS是AbstractQueuedSynchronizer的简称,AQS提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架。AQS实现了等待队列、条件队列、独占或共享锁的获取。而在Java中也提供了许多基于AQS实现的锁:基于AQS实现的锁1.1AQS的特性阻塞的等待队列共享或独占公平或非公平可重入允许中断1.2AQS内部信息AQS中是基于一个volatile修饰的
枫叶红花
·
2023-08-12 11:02
java并发
执行代码获取数据库数据
importjava.util.concurrent.Callable;importjava.util.concurrent.ExecutionException;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Future;/***并发工具类**@authorhuayal*@since2022-12-22
huayal
·
2023-08-12 09:44
java
开发语言
什么是
Java并发
?怎么解决?
Java存在并发的原因是,当多个线程在同时访问共享资源(如内存中的变量)时,可能会导致线程安全问题。如果一个线程在更改共享资源的值,而另一个线程在读取该值,则可能会导致意外的结果。解决并发问题的方法有以下几种:使用synchronized关键字:可以使用synchronized关键字保护共享资源,以保证一次只有一个线程访问它。使用Lock对象:可以使用java.util.concurrent包中的
长征coder
·
2023-08-12 07:35
java
并发
java并发
-Condition接口
Condition的简单使用使用Condition实现的有界队列publicclassBoundedQueue{privateObject[]items;privateintaddIndex,removeIndex,count;privateLocklock=newReentrantLock();privateConditionnotFull=lock.newCondition();private
油多坏不了菜
·
2023-08-12 05:52
Java并发
机制的底层实现原理
一、前置知识缓存一致性协议:每个处理器通过嗅探在总线上传播的数据来检查自己缓存的值是不是过期了,当处理器发现自己缓存行对应的内存地址被修改,就会将当前处理器的缓存行设置成无效状态,当处理器对这个数据进行修改操作的时候,会重新从系统内存中把数据读理器缓存里。内存屏障:现代计算机为了提高效率,当前线程在分配的时间片下不够用时,在能保证结果不会改变的时候,将后边执行时间短的命令提前执行。内存屏障是为了在
呆猫不呆
·
2023-08-12 05:37
并发编程
java
开发语言
5. Java中的锁
本文将介绍
Java并发
包中与锁相关的API和组件,以及这些API和组件的使用方式和实现细节1.Lock接口锁是用来控制多个线程访问共享资源的方式,像独占锁,读写锁在Lock接口出现之前,java程序考synchronized
ygxing
·
2023-08-11 23:50
Scala(第一章Scala入门)
1.2Scala环境搭建1.3Scala插件安装1.4HelloWorld案例1.4.1创建IDEA项目工程1.4.2class和object说明1.4.3Scala程序反编译1.5关联Scala源码1.6官方
编程指南
某科学的南条
·
2023-08-11 19:36
scala
开发语言
后端
26.Netty源码之ThreadLocal
ThreadLocal可以理解为线程本地变量,它是
Java并发
编程中非常重要的一个类。
然而,然而
·
2023-08-11 15:22
.net
python
开发语言
Java并发
线程池原理解析
线程1.概述线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。2.生命周期:当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Block
愉悦滴帮主)
·
2023-08-11 14:09
并发编程
java
线程池
【
Java并发
】什么是AQS?
文章目录什么是AQS?AQS与Synchronized的区别AQS-基本工作机制AQS是公平锁与非公平锁什么是AQS?全称是AbstractQueuedSynchronizer,即抽象队列同步器。它是构建锁或者其他同步组件的基础框架所谓抽象,其实目的就是把具体的逻辑交给子类去实现,这样就可以实现不同的特性的锁:例如:AQS常见的实现类ReentrantLock阻塞式锁Semaphore信号量Cou
怎么还不写代码
·
2023-08-11 12:59
Java
java
开发语言
jvm
上一页
25
26
27
28
29
30
31
32
下一页
按字母分类:
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
其他