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并发
编程:Java线程池核心ThreadPoolExecutor的使用和原理分析
引出线程池线程是并发编程的基础,前面的文章里,我们的实例基本都是基于线程开发作为实例,并且都是使用的时候就创建一个线程。这种方式比较简单,但是存在一个问题,那就是线程的数量问题。假设有一个系统比较复杂,需要的线程数很多,如果都是采用这种方式来创建线程的话,那么就会极大的消耗系统资源。首先是因为线程本身的创建和销毁需要时间,如果每个小任务都创建一个线程,那么就会大大降低系统的效率。其次是线程本身也是
Java黎先生
·
2021-04-18 22:58
Java并发
编程:Synchronized及其实现原理
并发编程.png每天进步一点,不做curd工程师与Api调用工程师欢迎访问个人博客网站:https://www.coder-programming.cn/作者:liuxiaopeng博客地址:http://www.cnblogs.com/paddix一、Synchronized的基本使用Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。Synchronize
Coder编程
·
2021-04-18 20:38
Java Synchronized 重量级锁原理深入剖析上(互斥篇)
线程基础Java“优雅”地中断线程Java线程状态真正理解JavaVolatile的妙用JavaThreadLocal你之前了解的可能有误JavaUnsafe/CAS/LockSupport应用与原理
Java
fishforest
·
2021-04-18 19:32
Java并发
编程:重排序和happens-before
举个例子在讲重排序之前,先来看一个例子:inta=0,b=0;publicvoidmethodOne(){intone=a;b=1;}publicvoidmethodTwo(){inttwo=b;a=2;}应该不难看出,在上面的例子中,我定义了两个共享变量a和b,以及两个方法。其中第一个方法是将局部变量one赋值为a,然后将b的值置为1。第二个方法则是将局部变量two赋值为b,然后将a的值置为2。
longLiveData
·
2021-04-18 19:29
深入理解
Java并发
编程之Synchronized关键字实现原理剖析
引言Synchronized关键字(互斥锁)原理,一线大厂不变的面试题,同时也是理解
Java并发
编程必不可少的一环!
竹子爱熊猫
·
2021-04-18 19:38
Java并发
编程(十五):CountDownLatch源码逐行深度分析
前言 CountDownLatch维护了一个计数器(还是是state字段),调用countDown方法会将计数器减1,调用await方法会阻塞线程直到计数器变为0。可以用于实现一个线程等待所有子线程任务完成之后再继续执行的逻辑,也可以实现类似简易CyclicBarrier的功能,达到让多个线程等待同时开始执行某一段逻辑目的。 有了前面Semaphore源码分析和ReentrantLock源码分
黄智霖-blog
·
2021-04-18 18:26
JAVA
Java并发编程
并发编程
CountDownLatch
并发编程知识详解(一)
要细致的了解每个知识背后产生的原因和相关处理并发的底层原理,确实还是比较需要时间好好消化的,现在对于一般的知识点一般我会几个方面着手去了解,从几个方面看,分别是:原理、使用场景、优缺点、产生的原因、代码接入实例,废话少说想在就带大家去了解
java
Android开发_Hua
·
2021-04-18 15:47
Java并发
机制的底层实现原理 - synchronized和volatile
“本文主要介绍synchronized和volatile到实现原理”synchronized和volatile几乎是java面试基础部分必会,不会你就吃亏了,这一篇文章摘抄《
Java并发
编程的艺术》对于初学者来说看懂这篇可能有点困难
八年码农
·
2021-04-18 14:20
Java 线程状态
线程基础Java“优雅”地中断线程Java线程状态真正理解JavaVolatile的妙用JavaThreadLocal你之前了解的可能有误JavaUnsafe/CAS/LockSupport应用与原理
Java
fishforest
·
2021-04-18 09:49
【
Java并发
编程与高并发解决方案】JAVA内存模型JMM以及乱序执行优化(重排序)
出现线程安全问题,一般是因为主存和工作内存数据不一致以及重排序,那今天就说一下这两个方面。乱序执行优化乱序执行优化是多核CPU为了提高效率而做的不符合代码规则的优化。inta=1;intb=1;intc=a+b;正常我们看到的执行顺序是A-B-C,但是因为CPU的重排序,运行顺序有可能变为B-A-C,这时候结果是不会受到任何影响的。JMM说到并发就要设计多个线程之间是如何通信的,通信可以分为两种:
留夕_3826
·
2021-04-18 09:25
深入理解
Java并发
编程之线程池、工作原理、复用原理及源码分析
一、引言一般在开发过程中,一个功能是运行时长太久了,一般是通过什么方式去优化的?异步/多线程,对于一个业务方法而言,如果其中的调用链太长势必会引起程序运行时间延长,导致整个系统吞吐来量下降,而我们使用多线程方式来对该方法的调用链进行优化,对于一些耦合度不是特别高的调用关系可以直接通过多线程来走异步的方式进行处理,大大的缩短了程序的运行时长,但是如果我们的多线程创建方式是通过newThread();
竹子爱熊猫
·
2021-04-18 09:58
Java Thread.sleep/Thread.join/Thread.yield/Object.wait/Condition.await 详解
线程基础Java“优雅”地中断线程Java线程状态真正理解JavaVolatile的妙用JavaThreadLocal你之前了解的可能有误JavaUnsafe/CAS/LockSupport应用与原理
Java
fishforest
·
2021-04-18 08:26
Java并发
之 AQS 深入解析(上)
线程基础Java“优雅”地中断线程Java线程状态真正理解JavaVolatile的妙用JavaThreadLocal你之前了解的可能有误JavaUnsafe/CAS/LockSupport应用与原理
Java
fishforest
·
2021-04-18 07:16
Java并发
编程 - CyclicBarrier
在之前写过的关于CountDownLatch的这篇文章中,我们通过使用"学生春游场景"这个示例来讲述了CountDownLatch的使用,在这个示例中我们这样处理:老师拿了个包含50个同学名字的名单,同学来一个就划掉一个,当所有的同学都被划掉后,说明所有的同学都到了,这时候就可以出发了。"划掉"也体现了"countdown"的含义。继续拿这个案例说来说,不过我们现在关注的不是"到齐-出发"这个先来
HRocky
·
2021-04-18 05:57
Android开发大佬的Offer收割之旅,从字节跳动到BAT
对于Java基础,推荐《深入理解Java虚拟机》《EffectiveJava》《
Java并发
编程之美》,Android推荐阅读《Android开发艺术探索》和《Android源码设计模式解析与实战》,Android
Android开发架构师
·
2021-04-18 03:12
Java并发
(二):底层实现原理
一.volatilevolatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。实现原理volatile修饰的共享变量,在进行写操作的时候,会多出一条lock前缀的汇编指令lockaddl$0x0,(%esp)。lock前缀的汇编指令的作用:将当前处理器缓存回写到内存。上述回写操作会导致其他处理器的缓存失效。正是这两条特性保证了volatile共享变量的“可见
Jorvi
·
2021-04-18 02:30
Java并发
指南11:解读 Java 阻塞队列 BlockingQueue
https://github.com/h2pl/Java-Tutorial喜欢的话麻烦点下Star哈文章同步发于我的个人博客:www.how2playlife.com本文是微信公众号【Java技术江湖】的《
Java
Java技术江湖
·
2021-04-18 00:41
JAVA并发
编程 并发容器 HashMap这一块 JDK1.7HashMap死循环原因
认识hashhash就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。常用HASH函数:直接取余法、乘法取整法、平方取中法。处理冲突
咕噜咕噜_f443
·
2021-04-17 23:28
【
Java并发
007】原理层面:ReentrantLock中lock()、unlock()全解析
一、前言Java线程同步两种方式,synchronized关键字和Lock锁机制,其中,AQS队列就是Lock锁实现公平加锁的底层支持。二、AQS源码对于lock.lock()的实现2.1AQS类+内部Node类2.1.1AQS类结构示意图首先我们要看看AQS的结构的类图在这里插入图片描述从AQS类的类结构示意图可以知道,AbstractQueuedSynchronizer的父类是Abstract
毛毛的学习笔记
·
2021-04-17 23:42
【并发编程】- Java内存模型-Happens-Before规则
学习王宝令老师的《
Java并发
编程实战》记录的学习笔记。Java内存模型规范了JVM如何提供按需禁用缓存和编译优化的方法。
lconcise
·
2021-04-17 22:33
Java Semaphore/CountDownLatch/CyclicBarrier 深入解析(原理篇)
线程基础Java“优雅”地中断线程Java线程状态真正理解JavaVolatile的妙用JavaThreadLocal你之前了解的可能有误JavaUnsafe/CAS/LockSupport应用与原理
Java
fishforest
·
2021-04-17 21:04
贝壳后台开发面经(22 届春招)
●学历:985软工●专利:3篇专利●实习:阿里巴巴Java开发面试准备自我介绍简历上的项目复盘和查新算法学习与归纳基础知识学习与归纳(计算机网络、操作系统、数据库、JAVA基础:主要包含JVM,
Java
Java编程浪子
·
2021-04-17 21:26
Java
字符串
java
面试
spring
编程语言
Java并发
编程系列之CountDownLatch用法及详解
背景前几天一个同事问我,对这个CountDownLatch有没有了解想问一些问题,当时我一脸懵逼,不知道如何回答。今天赶紧抽空好好补补。不得不说DougLea大师真的很牛,设计出如此好的类。1、回顾旧知识volatile关键字:当一个共享变量被volatile修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值。(这涉及到java内存模型了,有兴趣了解java内
境里婆娑
·
2021-04-17 18:10
Java并发
编程:JMM (Java内存模型) 以及与volatile关键字详解
计算机系统的一致性在现代计算机操作系统中,多任务处理几乎是一项必备的功能,因为嵌入了多核处理器,计算机系统真正做到了同一时间执行若干个任务,是名副其实的多核系统。在多核系统中,为了提升CPU与内存的交互效率,一般都设置了一层“高速缓存区”作为内存与处理器之间的缓冲,使得CPU在运算的过程中直接从高速缓存区读取数据,一定程度上解决了性能的问题。但是,这样也带来了一个新问题,就是“缓存一致性”的问题。
Java机械师
·
2021-04-17 18:44
Java并发
编程之CyclicBarrier详解
简介栅栏类似于闭锁,它能阻塞一组线程直到某个事件的发生。栅栏与闭锁的关键区别在于,所有的线程必须同时到达栅栏位置,才能继续执行。闭锁用于等待事件,而栅栏用于等待其他线程。CyclicBarrier可以使一定数量的线程反复地在栅栏位置处汇集。当线程到达栅栏位置时将调用await方法,这个方法将阻塞直到所有线程都到达栅栏位置。如果所有线程都到达栅栏位置,那么栅栏将打开,此时所有的线程都将被释放,而栅栏
小小的coder
·
2021-04-17 17:30
干货:
Java并发
编程必懂知识点解析
481495939并发编程三要素◾原子性原子,即一个不可再被分割的颗粒。在Java中原子性指的是一个或多个操作要么全部执行成功要么全部执行失败。◾有序性程序执行的顺序按照代码的先后顺序执行。(处理器可能会对指令进行重排序)◾可见性当多个线程访问同一个变量时,如果其中一个线程对其作了修改,其他线程能立即获取到最新的值。2.线程的五大状态◾创建状态当用new操作符创建一个线程的时候◾就绪状态调用sta
Java高级架构分享
·
2021-04-17 16:02
Java并发
编程:JMM (Java内存模型) 以及与volatile关键字详解
计算机系统的一致性在现代计算机操作系统中,多任务处理几乎是一项必备的功能,因为嵌入了多核处理器,计算机系统真正做到了同一时间执行若干个任务,是名副其实的多核系统。在多核系统中,为了提升CPU与内存的交互效率,一般都设置了一层“高速缓存区”作为内存与处理器之间的缓冲,使得CPU在运算的过程中直接从高速缓存区读取数据,一定程度上解决了性能的问题。但是,这样也带来了一个新问题,就是“缓存一致性”的问题。
java伯爵
·
2021-04-17 16:10
万字超强图文讲解AQS以及ReentrantLock应用(建议收藏)
相信很多人已经忘了其中的一些理论知识,别担心,我会在源码环节带入相应的理论知识点帮助大家回忆,做到理论与实践相结合,另外这是超长图文,建议收藏,如果对你有用还请点赞让更多人看到JavaSDK为什么要设计Lock曾几何时幻想过,如果
Java
Java互联网进阶架构师
·
2021-04-17 14:39
Java并发
包 线程
进程与线程进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,即进程空间或(虚空间)。进程不依赖于线程而独立存在,一个进程中可以启动多个线程。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部
烟雨乱平生
·
2021-04-17 14:57
Java 并发编程之各种锁的概念
如果对该文章感兴趣欢迎关注我的小博客Forest,我会分享更多学习时遇到的知识(●’◡’●)前置知识参考资料不可不说的Java“锁”事参考资料
Java并发
编程:volatile关键字解析学习到Java多线程的那一部分发现线程同步引出了一个锁的概念
alsritter1
·
2021-04-17 00:02
java
并发编程
多线程
锁
线程安全
九.多线程复习笔记之线程池(面向大厂)
并发复习笔记之第九章(多线程并发之线程池)想看后续请持续关注以下来源有书籍深入理解JVM虚拟机,
java并发
编程的艺术,深入浅出多线程,阿里巴巴技术手册以及一些公众号CS-Notes,JavaGuide
Y_Yl
·
2021-04-16 18:53
多线程
队列
java
多线程
面试
并发编程
深入理解AbstractQueuedSynchronizer只需15张图
前言
Java并发
编程系列第四篇AbstractQueuedSynchronizer,文章风格依然是图文并茂,通俗易懂,本文带读者们深入理解AbstractQueuedSynchronizer设计思想。
程序猿阿星
·
2021-04-16 12:29
java多线程
Java基础
多线程
java
后端
AQS
Lock非公平锁源码解读
ReentrantLock锁源码解析每当谈起锁,我一定要说一下大神DougLea,可以说是
java并发
编程鼻祖,juc包的作者,把每一行代码的性能做到了极致,曾经吊打jvm的synchronized锁,
断忆残缘
·
2021-04-16 10:35
Java并发
编程之基础篇二——启动和终止线程
启动和终止线程1.1构造线程1.2启动线程1.3理解中断1.4过期的suspend()、resume()和stop()1.5安全的终止线程结尾通过上篇章节我们知道通过线程的stat()方法进行启动,对着run()方法的执行完毕,线程也随之终止。下面将详细介绍线程的启动和终止。1.1构造线程在现场运行之前首先要构造一个线程对象,在构造的时候需要提供线程所需要的的属性,如线程所属的线程组、线程优先级、
Li's Spring
·
2021-04-16 01:17
Java并发
多线程
java
thread
Java Synchronized 偏向锁/轻量级锁/重量级锁的演变过程
线程基础Java“优雅”地中断线程Java线程状态真正理解JavaVolatile的妙用JavaThreadLocal你之前了解的可能有误JavaUnsafe/CAS/LockSupport应用与原理
Java
fishforest
·
2021-04-15 05:56
Java Synchronized实现互斥之应用与源码初探
线程基础Java“优雅”地中断线程Java线程状态真正理解JavaVolatile的妙用JavaThreadLocal你之前了解的可能有误JavaUnsafe/CAS/LockSupport应用与原理
Java
fishforest
·
2021-04-15 03:11
Java并发
--- 简单聊聊JDK中的七大阻塞队列
JDK中除了上文提到的各种并发容器,还提供了丰富的阻塞队列。阻塞队列统一实现了BlockingQueue接口,BlockingQueue接口在java.util包Queue接口的基础上提供了put(e)以及take()两个阻塞方法。他的主要使用场景就是多线程下的生产者消费者模式,生产者线程通过put(e)方法将生产元素,消费者线程通过take()消费元素。除了阻塞功能,BlockingQueue接
Java架构_师
·
2021-04-15 01:20
java并发
之ReentrantLock
java并发
之ReentrantLock知识导读了解ReentrantLock与synchronized的区别ReentrantLock是支持可重入的排它锁,同时支持公平锁和非公平锁两种方式ReentrantLock
立志19
·
2021-04-15 01:20
Java并发
编程之基础篇一理解线程
线程简介1.1什么是线程在理解什么是线程之前还要知道一个概念——进程。现代操作系统在运行一个java程序时,会为其创建一个进程,而现代操作系统调度的最小单元是线程,也叫轻量级进程(lightweightprocess),在一个进程里面可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。处理器在这些线程上高速切换,让使用者感觉得这些线程在同时运行。一个Ja
Li's Spring
·
2021-04-14 23:25
Java并发
java
多线程
后端
Java 对象头分析与使用(Synchronized相关)
线程基础Java“优雅”地中断线程Java线程状态真正理解JavaVolatile的妙用JavaThreadLocal你之前了解的可能有误JavaUnsafe/CAS/LockSupport应用与原理
Java
fishforest
·
2021-04-14 20:15
Java并发
编程之Exchanger方法详解
简介Exchanger是一个用于线程间数据交换的工具类,它提供一个公共点,在这个公共点,两个线程可以交换彼此的数据。当一个线程调用exchange方法后将进入等待状态,直到另外一个线程调用exchange方法,双方完成数据交换后继续执行。Exchanger的使用方法介绍exchange(Vx):阻塞当前线程,直到另外一个线程调用exchange方法或者当前线程被中断。x:需要交换的对象。excha
·
2021-04-14 20:06
Java并发
(一)——线程安全的容器(上)
Java中线程安全的容器主要包括两类:Vector、Hashtable,以及封装器类Collections.synchronizedList和Collections.synchronizedMap;Java5.0引入的java.util.concurrent包,其中包含并发队列、并发HashMap以及写入时复制容器。依笔者看,早期使用的同步容器主要有两方面的问题:1)通过对方法添加synchron
yhthu
·
2021-04-14 05:42
Java并发
总结
JMM内存抽象JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存中,每个线程都有一个私有的本地内存,本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,并不真实存在。它涵盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化。同时JMM确保在不同的编译器和不同的处理器平台之上,通过禁止特定类型的编译器重排序和处理器重排序,为程序员提供一致的内存可见性保证
PennyWong
·
2021-04-14 02:38
Java并发
之 AQS 深入解析(下)
线程基础Java“优雅”地中断线程Java线程状态真正理解JavaVolatile的妙用JavaThreadLocal你之前了解的可能有误JavaUnsafe/CAS/LockSupport应用与原理
Java
fishforest
·
2021-04-13 09:38
Java并发
编程:线程池ThreadPoolExecutor
为什么使用线程池?降低资源消耗提高响应速度提高线程的可管理性工作原理ThreadPoolExecutor执行execute()方法的流程图:executeThreadPoolExecutor执行示意图:ThreadPoolExecutor这里主要分以下四种情况:如果当前运行的线程少于corePoolSize,则创建新线程来执行任务(注意,执行这一步骤需要获取全局锁)。如果运行的线程等于或多于cor
singleZhang2010
·
2021-04-13 05:45
Java并发
编程:Executor框架的使用
概述Eexecutor作为灵活且强大的异步执行框架,其支持多种不同类型的任务执行策略,提供了一种标准的方法将任务的提交过程和执行过程解耦开发,基于生产者-消费者模式,其提交任务的线程相当于生产者,执行任务的线程相当于消费者,并用Runnable来表示任务,Executor的实现还提供了对生命周期的支持,以及统计信息收集,应用程序管理机制和性能监视等机制。Executor类图image.png实现原
singleZhang2010
·
2021-04-13 04:24
『读书笔记』
Java并发
编程的艺术(JMM内存模型)
前言本文并非按照书中目录所写,为自己读后总结,个人觉得这本书有着比较深的学习价值,在此致敬本书作者。并发编程模型两个关键问题并发编程需要着手解决原子性、有序性、可见性三个问题,这三个问题侧重在线程通信与线程同步上。针对于这两个问题,有两种机制来保证:共享内存|消息传递。共享内存屏蔽通信细节,但需要显式指定线程同步顺序;消息传递由程序员主动发送消息,显式执行线程通信,线程同步由于自带发送顺序,隐式进
苑苑苑爱学习
·
2021-04-12 19:55
Java并发
-JUC(下)
并发容器JDK提供的并发容器大部分在java。util.concurrent包中。比较常用的有:ConcurrentHashMap:线程安全版HashMap。ConcurrentLinkedQueue:线程安全版LinkedList。ConcurrentSkipListMap:线程安全版跳表Map。CopyOnWriteArrayList:线程安全版List,但是不是通过锁实现。在读多写少的场合性
·
2021-04-11 19:07
java
Java并发
-JUC(中)
接上节内容ThreadPool在多线程开发中,如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,如此一来就会大大降低系统的效率。可能出现服务器在为每个请求创建新线程和销毁线程上花费的时间和消耗的系统资源要比处理实际的用户请求的时间和资源更多。为了复用线程减少资源浪费,我们就需要使用到线程池。线程池提供了一种限制和管理线程资源的方案。通过线程池我们可以达到如下目的:降
·
2021-04-11 19:33
java
Java并发
-JUC(上)
AbstractQueuedSynchronizer,也就是大家常说的AQS,再到其中使用的CAS,Wait,Park,最后到操作系统层面的Mutex,Condition,希望通过这篇文章,大家能够对整个
Java
·
2021-04-11 19:00
java
上一页
50
51
52
53
54
55
56
57
下一页
按字母分类:
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
其他