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基础
Error和Exception1.2集合相关1.2.1Collection1.2.2Map1.2.3Iterator1.3反射与序列化1.4BIO、NIO、epoll1.5IO流1.6面向对象基础二、
Java
我家的大槐树
·
2022-06-02 07:10
杂项随笔
java
c语言IO
编程学习笔记
标准IO自带缓冲区为什么设置缓冲从效率的角度考虑,避免频繁地呼叫系统调用(read、write);其次缓冲区大小的设置在不同OS上是有技术的,标准库为我们做了优化选择。从安全角度考虑:用户态到内核态的切换。频繁的切换是不安全的。系统自动的在内存里面为每一个正在使用的文件开辟一个缓冲区,从内存向磁盘输出数据必须先送到内存缓冲区,装满缓冲区,在一起送到磁盘里面。从内存向磁盘读取数据,则一次从磁盘文件中
_Jxyz
·
2022-05-31 12:27
linux
学习笔记
c语言
学习
c++
【
JAVA并发
编程】读写锁ReentrantReadWriteLock的实现分析
一、简介读写锁在同一时刻允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞。读写锁维护了两把锁,一把读锁和一把写锁。获取读写锁可分为下面两种情况:同一线程:该线程获取读锁后,能够再次获取读锁,但不能获取写锁。该线程获取写锁后,能够再次获取写锁,也可以再获取读锁。不同线程:A线程获取读锁后,B线程可以再次获取读锁,不可以获取写锁。A线程获取写锁后,B线程无法获取读锁和写锁。二、
·
2022-05-30 23:56
java
技术书籍推荐1:
Java并发
编程的艺术、深入浅出MyBatis技术原理与实战、RabbitMQ实战、微服务架构与实践、架构探险:从零开始写分布式服务框架 等十本打包PDF
技术书籍推荐1《Docker生产环境实践指南》从生产角度出发将Docker应用于生产环境中本书围绕“Docker该如何应用到生产环境”这一核心问题展开。在本书中,读者将接触到多个IT企业应用Docker到生产环境的成功案例,了解Docker实际投产时将会面临的问题,以及它与现有基础设施存在的矛盾与冲突,了解构建Docker生态系统所需的配套设施,包括安全、构建镜像、持续集成/持续交付、镜像存储、配
scone5
·
2022-05-30 13:41
技术书籍推荐
docker
java
rabbitmq
软件架构
mybatis
java并发
-cas
一、有无锁并发在谈论无锁概念时,总会关联起乐观派与悲观派,对于乐观派而言,他们认为事情总会往好的方向发展,总是认为坏的情况发生的概率特别小,可以无所顾忌地做事,但对于悲观派而已,他们总会认为发展事态如果不及时控制,以后就无法挽回了,即使无法挽回的局面几乎不可能发生。这两种派系映射到并发编程中就如同加锁与无锁的策略,即加锁是一种悲观策略在谈论无锁概念时,总会关联起乐观派与悲观派,对于乐观派而言,他们
jose0925
·
2022-05-29 09:30
并发
Java并发
编程之CAS原理及用法详解
在
Java并发
编程的世界里,synchronized和Lock是控制多线程并发环境下对共享资源同步访问的两大手段。其中Lock是JDK层面的锁机制,是轻量级锁,底层使用大量的自旋+CAS操作实现的。
问北
·
2022-05-29 09:46
后端
Java
Web
多线程
java
CAS
Java多线程深入原理解析
目录一、并发编程遇到的几类问题1.上下文切换2.死锁3.资源限制二、
Java并发
底层实现原理1.volatile关键字1.1定义1.2对实现数据一致性的解释2.volatile的使用优化2.1追加字节为
Armyyyyy丶
·
2022-05-29 09:30
#
Java多线程
Java语言相关
多线程
java
java并发
编程第十课 Callable、Runnable、Future
第48讲:Callable和Runnable的不同?你好,欢迎来到第48课时,在本课时我们将讲解Callable和Runnable的不同。为什么需要Callable?Runnable的缺陷先来看一下,为什么需要Callable?要想回答这个问题,我们先来看看现有的Runnable有哪些缺陷?不能返回一个返回值第一个缺陷,对于Runnable而言,它不能返回一个返回值,虽然可以利用其他的一些办法,比
办公模板库 素材蛙
·
2022-05-28 10:16
java
教程
java
并发
java并发
编程Lock锁可重入性与公平性分析
目录一、相似之处:Lock锁vsSynchronized代码块二、Lock接口中的方法三、不同点:Lock锁vsSynchronized代码块四、锁的可重入性4.1.synchronized锁的可重入性4.2.ReentrantLock可重入锁五、Lock锁的公平性一、相似之处:Lock锁vsSynchronized代码块Lock锁是一种类似于synchronized同步代码块的线程同步机制。从J
·
2022-05-27 14:07
java并发
编程第七课 阻塞队列
第34讲:什么是阻塞队列?在本课时中我们主要讲解一下什么是阻塞队列。阻塞队列的作用阻塞队列,也就是BlockingQueue,它是一个接口,如代码所示:public interface BlockingQueue extends Queue{...}BlockingQueue继承了Queue接口,是队列的一种。Queue和BlockingQueue都是在Java5中加入的。BlockingQueu
办公模板库 素材蛙
·
2022-05-27 13:09
教程
java
java
并发
十年架构师经验,写下这篇Java高并发总结,堪称教科书级
然而现在网上关于
Java并发
编程的学习笔记资料多如牛毛,却没有看到那种完整全面的,因此今天把我之前收集整理到的这份Java多线程高并发实战手册拿出来分享给有需要的小
·
2022-05-26 20:51
java高并发并发程序员
为什么Java有了synchronized之后还造了Lock锁这个轮子?
众所周知,synchronized和Lock锁是
java并发
变成中两大利器,可以用来解决线程安全的问题。
三友的java日记
·
2022-05-26 12:00
Java并发
编程深入学习之线程池 超详细笔记
目录七、共享模型之工具--线程池1.线程池介绍2.ThreadPoolExecutor(重点)①线程池状态②构造方法(必须掌握)③JDK提供的线程工厂方法newFixedThreadPoolnewCachedThreadPoolnewSingleThreadExecutor使用第三方的线程工厂④线程池提交任务submit案例:invokeAll案例:invokeAny案例:⑤关闭线程池shutdo
未来很长,别只看眼前
·
2022-05-25 21:10
java并发编程
(JUC)
java
学习
开发语言
Java并发
编程-Java内存模型(JMM)
Java并发
编程-Java内存模型(JMM)前言在上一章
Java并发
编程-Android的UI框架为什么是单线程的?
·
2022-05-25 19:39
androidjava
那些优秀的程序员都在看哪些书?
核心技术卷2高级特性(原书第11版)[CoreJava]四、Java语言程序设计基础篇(原书第12版)五、Java编程思想[ThinkinginJava]六、EffectiveJava中文版(原书第3版)七、
Java
哪 吒
·
2022-05-25 11:59
搬砖工逆袭Java架构师
java
程序人生
java-ee
BiBi - 并发编程 -2- volatile
From:
Java并发
编程的艺术目录BiBi-并发编程-0-开篇BiBi-并发编程-1-挑战BiBi-并发编程-2-volatileBiBi-并发编程-3-锁BiBi-并发编程-4-原子操作BiBi-并发编程
奋飞的蜗牛ing
·
2022-05-24 15:46
Java并发
线程池底层原理剖析和源码分析
目录一、线程和线程池的效率对比二、Java线程池三、线程池源码分析四、ScheduledThreadPoolExecutor源码分析一、线程和线程池的效率对比使用线程方式执行程序/****使用线程的方式去执行程序*/publicclassThreadTest{publicstaticvoidmain(String[]args)throwsInterruptedException{Longstart
swadian2008
·
2022-05-24 12:52
并发编程
Java线程池
线程池
线程池源码分析
【Java 】JUC并发编程
Java并发
引入1、程序、进程、线程的概念程序通常为了完成特定的任务、用某种语言编写的一组指令的结合。
秋刀鱼与猫_
·
2022-05-22 07:35
Java基础
java
开发语言
后端
java高并发api
Java并发
中的ABA问题学习与解决方案
目录1.简介2.Compareandswap3.ABA问题3.1ABA问题的实际场景:账户余额修改3.2账户余额修改时产生的问题4.银行取款问题代码演示5.值类型与引用类型的场景6.解决方法7.Java中的解决方法8.总结1.简介我们将了解在并发编程中的ABA问题。同时学习引起该问题的根因及问题解决办法。2.Compareandswap为了理解根本原因,首先回顾一下Compareandswap的概
·
2022-05-20 18:23
【
JAVA并发
编程】Condition的实现原理
一、Condition简介Java对象的wait()、notify()以及notifyAll()方法,这些方法与synchronized关键字配合,可以实现等待/通知模式。Condition接口也提供了类似功能,与Lock配合可以实现等待/通知模式,但是两者还是有一些区别的。对比项ObjectMoitorCondition前置条件获取对象的锁调用Lock.lock()获取锁调用lock.newCo
·
2022-05-20 00:57
java
java并发
数据包Exchanger线程间的数据交换器
java.util.concurrent.Exchanger可以用来进行数据交换,或者被称为“数据交换器”。两个线程可以使用Exchanger交换数据,下图用来说明Exchanger的作用在下面的代码中首先我们定义了一个Exchanger,用于数据交换然后定义了两个线程对象bookExchanger1和bookExchanger2,两个线程都持有Exchanger交换器对象用于数据交换两个线程中的
·
2022-05-19 09:07
Java并发
编程-Android的UI框架为什么是单线程的?
前言众所周知,Android会在ViewRootImpl中调用checkThread方法检测是否是在UI线程中更新UI//ViewRootImpl.javafinalThreadmThread;publicViewRootImpl(Contextcontext,Displaydisplay){mThread=Thread.currentThread();}voidcheckThread(){if(
·
2022-05-18 10:25
androidjava
Java学到什么程度才算精通?(1),网易架构师深入讲解Java开发
Java并发
技术完全可以独立出来学习,是Java进阶知识的一大重点。2.5Java网络编程和服务器这一块内容是Java中比较复杂但也很重要的一块内容。
普通网友
·
2022-05-17 18:00
程序员
后端
面试
java
Java并发
包(JUC)中的信号量Semaphore详解,深入浅出Semaphore
支持博主:点赞、收藏⭐、留言目录1.Semaphore简介1.1Semaphore是什么1.2Semaphore的作用2.Semaphore中的方法(我们在之后的章节中会详细讲解,读者可以先大致看一下)3.acquire()方法和release()方法3.1构造方法、acquire()方法和release()方法简介3.2Semaphore构造器中控制线程并发量为一(某段时间内只能并发一个线程)3
MrYuShiwen
·
2022-05-17 18:58
#
Java并发与异步编程高级教程
Java
JUC
并发
信号量
Semaphore
[
java并发
编程]基于信号量semaphore实现限流器
[TOC]一、什么是信号量“信号量”在编程术语中使用单词semaphore,那什么是“信号量”?信号量就好比你家厨房入口架子上摆了三把锅。如果你的孩子热奶拿走一把,你的老婆热汤拿走一把,你的妈妈做菜拿走一把,你想煮面条就没有锅了。当你看到这种情况,你就不会进入厨房了,你处于等待状态。也就说厨房按照“锅的数量”作为信号量,只能容纳三个人(线程)。当你的老婆热完汤之后,把锅重新放回架子上,你就可以去获
·
2022-05-17 08:05
java
[
java并发
编程]基于信号量semaphore实现限流器
一、什么是信号量“信号量”在编程术语中使用单词semaphore,那什么是“信号量”?信号量就好比你家厨房入口架子上摆了三把锅。如果你的孩子热奶拿走一把,你的老婆热汤拿走一把,你的妈妈做菜拿走一把,你想煮面条就没有锅了。当你看到这种情况,你就不会进入厨房了,你处于等待状态。也就说厨房按照“锅的数
字母哥博客
·
2022-05-17 08:00
java并发
编程StampedLock高性能读写锁
目录一、读写锁二、悲观读锁三、乐观读一、读写锁在我的《
java并发
编程》上一篇文章中为大家介绍了《ReentrantLock读写锁》,ReentrantReadWriteLock可以保证最多同时有一个线程在写数据
·
2022-05-16 11:05
java并发
编程-StampedLock高性能读写锁
[TOC]一、读写锁在我的《
java并发
编程》上一篇文章中为大家介绍了《ReentrantLock读写锁》,ReentrantReadWriteLock可以保证最多同时有一个线程在写数据,或者可以同时有多个线程读数据
·
2022-05-16 08:00
java
java并发
编程-StampedLock高性能读写锁
一、读写锁在我的《
java并发
编程》上一篇文章中为大家介绍了《ReentrantLock读写锁》,ReentrantReadWriteLock可以保证最多同时有一个线程在写数据,或者可以同时有多个线程读数据
字母哥博客
·
2022-05-16 08:00
java并发
高的情况下用ThreadLocalRandom来生成随机数
目录一:简述二:Random的性能差在哪里三:ThreadLocalRandom的简单使用四:为什么ThreadLocalRandom能在保证线程安全的情况下还能有不错的性能一:简述如果我们想要生成一个随机数,通常会使用Random类。但是在并发情况下Random生成随机数的性能并不是很理想,今天给大家介绍一下JUC包中的用于生成随机数的类--ThreadLocalRandom.(本文基于JDK1
·
2022-05-15 12:22
java
java并发
编程中ReentrantLock可重入读写锁
目录一、ReentrantLock可重入锁二、ReentrantReadWriteLock读写锁三、读锁之间不互斥一、ReentrantLock可重入锁可重入锁ReentrantLock是一个互斥锁,即同一时间只有一个线程能够获取锁定资源,执行锁定范围内的代码。这一点与synchronized关键字十分相似。其基本用法代码如下:Locklock=newReentrantLock();//实例化锁/
·
2022-05-15 12:51
java
java并发
高的情况下用ThreadLocalRandom来生成随机数
目录一:简述二:Random的性能差在哪里三:ThreadLocalRandom的简单使用四:为什么ThreadLocalRandom能在保证线程安全的情况下还能有不错的性能一:简述如果我们想要生成一个随机数,通常会使用Random类。但是在并发情况下Random生成随机数的性能并不是很理想,今天给大家介绍一下JUC包中的用于生成随机数的类--ThreadLocalRandom.(本文基于JDK1
·
2022-05-15 10:21
java并发
编程中ReentrantLock可重入读写锁
目录一、ReentrantLock可重入锁二、ReentrantReadWriteLock读写锁三、读锁之间不互斥一、ReentrantLock可重入锁可重入锁ReentrantLock是一个互斥锁,即同一时间只有一个线程能够获取锁定资源,执行锁定范围内的代码。这一点与synchronized关键字十分相似。其基本用法代码如下:Locklock=newReentrantLock();//实例化锁/
·
2022-05-15 10:50
【
java并发
编程】ReentrantLock 可重入读写锁
[TOC]一、ReentrantLock可重入锁可重入锁ReentrantLock是一个互斥锁,即同一时间只有一个线程能够获取锁定资源,执行锁定范围内的代码。这一点与synchronized关键字十分相似。其基本用法代码如下:Locklock=newReentrantLock();//实例化锁//lock.lock();//上锁booleanlocked=lock.tryLock();//尝试上锁
·
2022-05-15 08:40
java
【
java并发
编程】ReentrantLock 可重入读写锁
一、ReentrantLock可重入锁可重入锁ReentrantLock是一个互斥锁,即同一时间只有一个线程能够获取锁定资源,执行锁定范围内的代码。这一点与synchronized关键字十分相似。其基本用法代码如下:Locklock=newReentrantLock();//实例化
字母哥博客
·
2022-05-15 08:00
【
Java并发
笔记】03 互斥锁(上):解决原子性问题
原子性问题的源头是线程切换Q:如果禁用CPU线程切换是不是就解决这个问题了?A:单核CPU可行,但到了多核CPU的时候,有可能是不同的核在处理同一个变量,即便不切换线程,也有问题。所以,解决原子性的关键是「同一时刻只有一个线程处理该变量,也被称为互斥」。如何做到呢?用「锁」。一、锁模型一)简易锁模型一般看到的锁模型长下面这样。但对于这个模型,会有几个疑问:锁的是什么?临界区的这一堆代码相关的都被锁
·
2022-05-14 21:28
java并发
收藏了800道Java后端经典面试题,分享给大家,希望你找到自己理想的Offer呀~
Java基础Java集合
Java并发
&&多线程JVM篇数据库缓存/Redis计算机网络消息队列mybatis操作系统SpringNetty/tomcat常用Linu
M偶遇在沙漠
·
2022-05-14 20:37
java后端
Java
面经
java
面试
经验分享
【
JAVA并发
编程】AbstractQueuedSynchronizer(AQS)的实现原理
一、AQS基本介绍同步器AbstractQueuedSynchronizer(简称AQS)是用来构建其他同步组件的基础,它使用了一个int变量来表示同步状态state,通过内置的FIFO队列来完成线程的排队工作。二、如何使用AQS来构建同步组件?同步器的设计是基于模板模式的,使用者继承同步器并重写指定的方法。同步器可重写的方法如下:方法名称描述booleantryAcquire(intarg)尝试
·
2022-05-14 18:49
java后端
Java开发必备:腾讯架构师解析
Java并发
编程从入门到精通
编写优质的并发代码是一件难度极高的事情。Java语言从第一版本开始内置了对多线程的支持,这一点在当年是非常了不起的,但是当我们对并发编程有了更深刻的认识和更多的实践后,实现并发编程就有了更多的方案和更好的选择。为什么需要并发并发其实是一种解耦合的策略,它帮助我们把做什么(目标)和什么时候做(时机)分开。这样做可以明显改进应用程序的吞吐量(获得更多的CPU调度时间)和结构(程序有多个部分在协同工作)
·
2022-05-14 16:15
java并发并发编程程序员
【
java并发
编程】Lock & Condition 协调同步生产消费
一、协调生产/消费的需求本文内容主要想向大家介绍一下Lock结合Condition的使用方法,为了更好的理解Lock锁与Condition锁信号,我们来手写一个ArrayBlockingQueue。JDK实际上已经有这个类,基于Lock锁与Condition锁信号实现的,当然JDK实现代码很复杂包含了更严谨的逻辑校验,以及从性能优化的角度做了更多的工作。本文中我们只是来简单实现一下其核心逻辑:Ar
·
2022-05-14 09:01
java
【
java并发
编程】Lock & Condition 协调同步生产消费
一、协调生产/消费的需求本文内容主要想向大家介绍一下Lock结合Condition的使用方法,为了更好的理解Lock锁与Condition锁信号,我们来手写一个ArrayBlockingQueue。JDK实际上已经有这个类,基于Lock锁与Condition锁信号实现的,当然JDK实现代码很复杂
字母哥博客
·
2022-05-14 09:00
java并发
容器ConcurrentHashMap深入分析
目录前言基础回顾红黑树红黑树数据结构红黑树插入数据多线程竞争下的读写操作扩容原理正在扩容&&有多个线程正在竞争扩容期间的读操作扩容期间的写操作总结前言我是fancy,一个年纪轻轻bug量就累计到3200个的程序员,同事们都夸我一个人养活了整个测试组。最近迷上了并发编程。并发这玩意怎么说呢,就是你平时工作用不到,一用就用在面试上。这不,又卷起了并发容器。那说起并发容器,你一定也知道那几个,CopyO
·
2022-05-13 11:11
【
Java并发
笔记】01 并发编程Bug的源头
一、根本原因「CPU、内存、磁盘之间的速度差异」为了能同时执行多个任务,CPU发展出时间片轮转、多核等CPU要从内存中读数据太慢了,所以给自己设置了缓存CPU读磁盘更慢了,所以可以让该线程阻塞二、直接原因缓存导致的可见性问题CPU把要处理的数据加载到自己的缓存中,处理完了放回自己的缓存。另一个CPU同样的处理,就导致可能看不到上一个CPU处理的结果。线程切换带来的原子性问题程序中的一行代码往往不是
·
2022-05-12 16:45
java并发
【
Java并发
笔记】02 Java内存模型:看Java如何解决可见性和有序性问题
如何解决其中的可见性和有序性导致的问题,这也就引出来了今天的主角——Java内存模型。一、什么是Java内存模型?导致可见性的原因是缓存,导致有序性的原因是编译优化,那解决可见性、有序性最直接的办法就是禁用缓存和编译优化,但这样虽然解决了问题,但也导致带来的性能优化都没了。因此,解决方案是:提出一套规则和方法,是程序员能在该禁用的时候禁用,不该禁用的时候不禁用。Java内存模型规范就是来解决这个问
·
2022-05-12 16:15
java并发
Java并发
编程之volatile与JMM多线程内存模型
目录一、通过程序看现象二、为什么会产生这种现象(JMM模型)?三、MESI缓存一致性协议一、通过程序看现象在开始为大家讲解Java多线程缓存模型之前,我们先看下面的这一段代码。这段代码的逻辑很简单:主线程启动了两个子线程,一个线程1、一个线程2。线程1先执行,sleep睡眠2秒钟之后线程2执行。两个线程使用到了一个共享变量shareFlag,初始值为false。如果shareFlag一直等于fal
·
2022-05-12 16:44
【金九银十】面试竟然被这31道Java基础题难倒了?细节爆炸
因此,
Java并发
问题一直是各个大厂面试的重点之一。很多程序员每天
Java老司机一枚
·
2022-05-11 20:18
程序员
java
后端
面试
互联网裁员大潮下,还可以这样乘风破浪吗
一直想整理出一份完美的面试宝典,但是时间上一直腾不开,这套一千多道面试题宝典,结合今年金三银四各种大厂面试题,下面就给粉丝们分享一下,这份Java神技;这套互联网Java工程师面试题包括了:基础&进阶篇字符串&集合面试题汇总、.
Java
那只斑马不睡觉
·
2022-05-10 11:13
java
面试
经验分享
tomcat
jar
对象面试官系列之
Java并发
--面试官看了都说好
1.线程的实现A.实现Runnable接口;多个线程共同完成一个任务B.实现Callable接口;与Runnable相比,Callable可以有返回值还可以抛出异常,返回值通过FutureTask进行封装。FutureTaskfutureTask=newFutureTask(newCallTest());newThread(futureTask).start();C.继承Thread类。(多个线程
骑着猪追马的程序员
·
2022-05-09 14:51
面试
java
开发语言
后端
C++核心
编程学习笔记
之【类和对象之封装】(十二)
文章目录类和对象封装1、封装的意义1.1封装的意义(一)1.1.1案例练习1.2封装的意义(二)2、struct和class的区别3、成员属性设置为私有4、封装案例(一)5、封装案例(二)类和对象c++面向对象的三大特性为:封装、继承、多态c++热门为万事万物都皆为对象,对象有其属性和行为。属性和行为又统一称为成员封装1、封装的意义1.1封装的意义(一)#includeusingnamespace
全息数据
·
2022-05-09 11:45
c++
Java并发
编程之对象的组合
目录1.设计线程安全的类1.1收集同步需求1.2依赖状态的操作1.3状态的所有权2.实例封闭2.1Java监视器模式3.线程安全性的委托3.1基于委托的车辆追踪器3.2独立的状态变量3.3发布底层的状态变量1.设计线程安全的类在设计线程安全类的过程中,需要包含以下三个基本要素:找出构成对象状态的所有变量。找出约束变量的不变性条件。建立对象状态的并发访问管理策略。1.1收集同步需求在很多类中都定义了
·
2022-05-08 18:55
上一页
42
43
44
45
46
47
48
49
下一页
按字母分类:
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
其他