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并发编程实战
-读书笔记6
为类的用户编写线程安全性担保的文档;为类的维护者编写类的同步策略文档。java.text.SimpleDateFormat并不是线程安全的,如果一个类没有明确指明,就不要假设他是线程安全的。另一方面,倘若不对容器提供的对象(比如HttpSession)的线程安全性做出一些合理的假设,又不可能开发一个基于Servlet的应用。在设计同步容器返回的迭代器时,并没有考虑到并发修改的问题,当他们察觉容器在
kingdz618
·
2020-08-03 18:55
Java并发编程实战笔记
Java并发编程实战
总结 (一)
前提传奇网m.xs86.com首先该场景是一个酒店开房的业务。为了朋友们阅读简单,我把业务都简化了。业务:开房后会添加一条账单,添加一条房间排期记录,房间排期主要是为了房间使用的时间不冲突。如:账单A,使用房间1,使用时间段为2020-06-0112:00-2020-06-0212:00,那么还需要使用房间1开房的时间段则不能与账单A的时间段冲突。业务类为了简单起见,我把几个实体类都简化了。账单类
keocce
·
2020-08-03 18:16
java并发中的延迟初始化
在《
java并发编程实战
》这本书的第十六章中讲到不安全的发布时,给了一个不安全的延迟初始化示例:publicclassUnsafeLazyInitialization{privatestaticResourceresource
aswang
·
2020-08-03 15:56
java
Java并发编程实战
总结
第一章到第五章的“并发技巧清单”:1.可变状态是至关重要的。所有的并发问题都可以归结为如何协调对并发状态的访问,可变状态越少,就越容易确保线程安全性。2.尽量将域声明为final类型,除非需要它们是可变的。3.不可变对象一定是线程安全的。不可变对象能极大地降低并发编程的复杂性。它们更为简单而且安全,可以任意共享而无须使用加锁或保护性复制等机制。4.封装有助于管理复杂性。在编写线程安全的程序时,虽然
星际丶牛仔
·
2020-08-03 14:07
java
Java并发编程实战
-读书笔记
记录一些阅读过程中我认为需要记录的地方。线程安全如何保证禁止跨线程共享变量不可变对象同步(加锁)共享状态&非共享状态例如:Servlet的某个实现类里的每个自定义方法是非共享状态。但是该类如果引入了一个类变量,那么该实现类处于共享状态。(注意,Servlet的实例只有一份,来一个请求会有一个线程去执行对应Servlet实例的service方法)checkthenact问题就在于check完之后,a
zysaaaaa
·
2020-08-03 14:17
Java多线程
Java基础
关于双重检查加锁(DCL)的理解
publicResourcegetResource(){if(resource==null){synchronized{if(resource==null)resource=newResource();}}returnresource;}}援引
java
WK_SDU
·
2020-08-03 14:47
需要学习的内容
jvm《深入理解java虚拟机》多线程《并发编程核心思想》《
java并发编程实战
》springmybatis容器数据结构和算法设计模式《HeadFirst设计模式》mysql数据库消息中间件rediszookeepernio
PerfectACE
·
2020-08-03 13:00
learning
java并发编程实战
总结(一)
1.前言该书由DougLea之外的另外一位Java并发大神BrianGoetz和TimPeierls合著,算是Java并发领域的一本经典书籍。此书从2013年入手之后,拿起放下了三次。之前两次自己对并发的研究还不是很深,基本属于一知半解,工作当中也极少用到并发,看了就忘。最近半年在阅读JDK源代码,特别是阅读完部分java.util.concurrency包之后,对并发的感觉更深。这个时候回头来看
FLE123
·
2020-08-03 12:49
Java基础
Java并发编程实战
笔记(二):对象的共享
可见性为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制。缺乏同步的程序中可能产生错误结果的一种情况:失效数据。加锁的含义不仅仅局限于互斥行为,还包含内存可见性。为了确保所有线程都能看到共享变量的最新值,所有执行读操作或者写操作的线程都必须在同一个锁上同步。Java提供了一种稍弱的同步机制,即volatile变量,用来确保变量的更新操作通知到其他线程。当把变量声明为volatile类型后
DawnDreamer
·
2020-08-03 12:14
并发编程
Java并发编程学习笔记
前言LZ看的是高洪岩的《Java多线程编程核心技术》和《Java并发编程核心方法与框架》,都两本书都是偏入门的书籍,《Java并发编程的艺术》和《
Java并发编程实战
》是业内公认的好书Java多线程技能实现多线程编程的方式主要有两种
Java识堂
·
2020-08-03 12:01
Java
EE
Java并发编程实战
总结
https://time.geekbang.org/column/intro/159的总结并发bug原因由于CUP,内存与I/O设备三者存在速度差异,为了平衡三者速度差异,采用了以下三种方式cpu增加缓存平衡与内存速度差异,但是会导致可见性问题(线程a对共享变量的操作,线程b可能看不到);操作系统增加进程与线程,以分时复用cpu来平衡cup与I/O设备的速度差异,但是会导致原子性问题(我们潜意识的
不穿裤裆好凉爽
·
2020-08-03 11:38
并发
【Java并发】
JAVA并发编程实战
-读书笔记10
如果你想Executor提交了一个批处理任务,希望获得结果,只能不断的调用timeout为零的get。幸运的是有一种更好的方法:完成服务(completionservice)CompletionServie整合了Executor和BlockingQueue的功能。可以将Callable的任务提交给它去执行,然后使用类似队列中的take和poll方法,在结果完整可用时获得这个结果。ExecutorC
kingdz618
·
2020-08-03 10:30
Java并发编程实战笔记
《
Java并发编程实战
》读书笔记
自从写了大半点hibernate读书笔记被csdn的渣渣编辑器吞了之后,已经很多天没有再用博客来记录自己的学习了。这段时间深入学习了java并发这一块,收获良多,再次记录。第二章线程安全性1.无状态的一定是线程安全的无状态的对象:不包含任何域,也不包含任何对其他类中域的引用。计算过程的临时状态仅存在于线程栈上的局部变量中,并只能由正在执行的线程访问。2.原子性++count不是原子的,包含3个独立
沈鸿斌
·
2020-08-03 10:45
Java&JVM
Java并发编程实战
--显式的Condition对象
正如Lock是一种广义的内置锁,Condition也是一种广义的内置条件队列。publicinterfaceCondition{voidawait()throwsInterruptedException;booleanawait(longtime,TimeUnitunit)throwsInterruptedException;//参数nanosTimeout为最长等待时间,单位为纳秒;如果超
衣舞晨风
·
2020-08-03 08:56
Java
Java
进阶
[
Java并发编程实战
]什么是锁顺序死锁
精诚所至,金石为开。———《后汉书·广陵思王荆传》意思是人的诚心所到,能感动天地,使金石为之开裂。比喻只要专心诚意去做,什么疑难问题都能解决。锁顺序死锁两个线程试图通过不同的顺序获取多个相同的锁。如果请求的顺序不相同,那么会出现循环的锁依赖现象,产生死锁。但是如果保证同时请求锁L和锁M的每一个线程,都是按照从L到M的顺序,那么就不会发生死锁了。举个例子说明一下,让我们更加直观的了解顺序死锁问题,请
林里少年
·
2020-08-02 22:14
Java并发编程
Java并发编程实战
并发编程
锁顺序死锁
死锁
java
Java并发编程实战
第3章 对象的共享
3.1可见性在没有同步的情况下,编译器、处理器以及运行时等都可能对操作的执行顺序进行一些意想不到的调整。3.1.1失效数据3.1.2非原子的64位操作最低安全性:即使是失效值,但至少是之前的值,不是随机值。例外:非volatile类型的64位数值变量(long、double)。Java内存模型要求:变量的读取或写入都是原子操作,但是对非volatile的long和double变量,JVM允许将64
程人之美
·
2020-08-02 18:16
并发编程
Java并发编程实战
第5章 基础构建模块
委托是创建线程安全类的一个最有效的策略:只需让现有的线程安全类管理所有的状态即可。5.1同步容器类如果不希望在迭代期间对容器加锁,那么一种替代方案就是克隆容器,并在副本上进行迭代。由于副本被封闭在线程内,因此其他线程不会在迭代期间对其修改。容器的toString、hashCode、equals方法都隐含了迭代操作。5.2并发容器同步容器将对容器状态的访问都串行化,以实现线程安全性,这会严重降低并发
程人之美
·
2020-08-02 18:16
并发编程
Java并发编程实战
第7章 取消与关闭
Java没有提供任何机制来安全地终止线程。但它提供了中断,这是一种协作机制,能够使一个线程终止另一个线程的当前工作。这种协作方法是必要的,我们很少希望某个任务、线程或服务立即停止,因为这种立即停止会使共享数据结构处于不一致的状态。在编写任务和服务时可以使用一种协作的方式:当需要停止时,它们首先会清楚当前旨在执行的工作,然后再结束。任务本身比发出取消请求的代码更清楚如何执行清除工作。行为良好的软件能
程人之美
·
2020-08-02 18:16
并发编程
Java并发编程实战
第4章 对象的组合
4.1设计线程安全的类三要素:找出构成对象状态的所有变量找出约束状态变量的不变性条件建立对象状态的并发访问管理策略4.1.1收集同步需求状态空间:对象与变量的所有可能取值。状态空间越小,越容易判断线程的状态。final类型的域使用得越多,就越能建华对象可能状态的分析过程。4.1.2依赖状态的操作类的不变性条件与后验条件约束了在对象上有哪些状态和状态转换是有效的。4.1.3状态的所有权4.2实例封闭
程人之美
·
2020-08-02 18:16
并发编程
Java并发编程实战
第6章 任务执行
6.1在线程中执行任务在理想情况下,各个任务之间时相互独立的:任务并不依赖于其他任务的状态、结果、边界效应。应用程序性希望支持尽可能多的用户,从而降低每个用户的服务成本,而用户则希望获得尽快的响应。6.1.1串行的执行任务6.1.2显示地为任务创建线程只要请求到达的速率不超出服务器的处理能力。6.1.3无限制创建线程的不足线程生命周期的开销非常高资源消耗稳定性:线程数的限制值随平台不同,并受JVM
程人之美
·
2020-08-02 18:16
并发编程
「
Java并发编程实战
」之对象的共享
前言本系列博客是对《
Java并发编程实战
》的一点总结,本篇主要讲解以下几个内容,内容会比较枯燥。
码处高效
·
2020-08-01 14:52
Java并发编程——Executor框架
今天看到《
Java并发编程实战
》第六章的时候,书中讲了利用Executor框架来实现多线程,平时Executor用得不多,今天顺带学习了一下,写出来总结总结。
qq_39479426
·
2020-07-31 22:54
Java并发编程实战
java并发编程实战
读书笔记
1、线程安全指多个线程访问某个类时,不管运行时环境采用何种调度方式或线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,称这个类时线程安全的2、线程安全核心主要是对状态访问进行管理,尤其是共享的和可变的状态访问注:对象的状态是存储在状态变量(实例或静态域中)的数据,换句话说,就是类中的各种变量,包括静态和非静态变量无状态对象一定是线程安全的,如下图所示,没有
我的轩辕
·
2020-07-31 14:10
【
java并发编程实战
读书总结终章】死锁、活锁、性能问题
活跃性危险死锁什么是死锁?一条小路上两个人堵到了一起,a说你让我先走吧,b说不行我不让,你先让我走,互不相让,两个人都过不去。A线程等待b线程的锁,b线程的任务在等待a线程的锁,两个线程在此处不停尝试获得锁,永无休止。1.png死锁的种类:静态锁顺序死锁2.png如图直接看代码就能看出有死锁问题。动态锁顺序死锁代码看起来好好的,只有运行时在某种特定的极端情况下才会出现。3.png当fromAcco
powerjiajun
·
2020-07-30 06:17
《
JAVA并发编程实战
》第十三章 显示锁
13.1 Lock与ReentrantLockReentrant英[riːˈɛntrənt]可重入;可重入的;重入;可再入的;重进入;程序清单13-1Lock接口定义packagejava.util.concurrent.locks;importjava.util.concurrent.TimeUnit;publicinterfaceLock{voidlock();voidlockInterrup
小超_8b2f
·
2020-07-30 01:31
《
Java并发编程实战
》——线程安全性
什么是线程安全性?13页:当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么就称这个类是线程安全的。哪些做法保证线程安全性?使用线程安全对象(例如AcomicLong)、加锁机制保证线程安全性需要注意哪些?同步机制中,变量的访问都要加同步,包括变量的读取。22页:如果用同步来协调对某个变量的访问,那么在访问这个变量的所有位置上都需要使用同步。一种常见的错误是认为,只有在写入共享变量时才需
wzlayer
·
2020-07-29 16:00
并发
【Java并发学习一】如何实现一个线程池
前言和设计模式一样,打算花三个月的时间,结合《
Java并发编程实战
》一书,来总结下并发方面的知识。第一章从线程池的原理开始总结,希望自己能坚持下来,加油!1.如何实现一个线程池?
大树先生
·
2020-07-29 02:33
java
C++程序员学习Java初感
看了一个多月的Java了,涉及的书籍有:《OnJava8》、《深入理解Java虚拟机》、《Java并发编程的艺术》、《ManningSpringinAction5-thEdition》以及极客时间上的《
Java
清远qingyuan
·
2020-07-28 14:55
C++
编程思考
java并发编程实战
手册第二章笔记
2.2使用synchronized实现方法,银行存取款的案例,包括线程安全和线程不安全的两种演示代码,包括静态实例方法与静态同步方法的区别,静态同步方法与实例同步方法的使用2.2.线程安全的操作:packagecn.fans.chapter2.one;importjava.util.concurrent.TimeUnit;/****@authorfcs*@date2015-4-11*描述:账号类,
程序男
·
2020-07-28 13:21
java多线程专题
Java并发编程基础-Java内存模型、volatile关键字与指令重排序及happens-before原则
Java并发编程实战
学习笔记目录1.什么是Java内存模型?它和JVM内存模型有什么区别?2.Java内存模型有哪些组成部分?3.volatile关键字的作用?
ARong.
·
2020-07-28 04:39
#
-----【Java并发编程】
ARong's
Java
Notes
从Exchager数据交换到基于trade-off的系统设计
《
Java并发编程实战
》中介绍了判定数据交换时机的两种方案,却不甚清晰。从“时机选择的目的”出
猴子007
·
2020-07-27 23:03
阿里巴巴大数据之JAVA研发
计算机基础基本的数据结构和算法需要理解操作系统原理需要理解,推荐《深入理解计算机系统》编译原理简单了解熟练掌握Java语言对Java语言要深入理解,推荐看一下《Java核心技术:卷一》多线程,并发编程,推荐《
java
ForrestZhu
·
2020-07-27 22:45
计算机相关书籍分享pdf_1(仅供学习使用)
所以没有把全部资料整个分享其它书籍链接:计算机相关书籍分享pdf_2、计算机相关书籍分享pdf_3多线程Java7并发编程实战手册JAVA并发编程核心方法与框架,高洪岩著Java并发编程:设计原则与模式(第二版)JAVA并发编程实践
Java
CodeYuan-Y
·
2020-07-27 17:05
#
资料
聊聊高并发(二)结合实例说说线程封闭和背后的设计思想
下面这个定义来自《
Java并发编程实战
》,这本书强烈推荐,是几个Java语言的作者合写的,都是并发编程方面的大神。线程安全指的是:当多个线程访问某个类时,这个类始终都能表现出正确的行为。
iter_zc
·
2020-07-27 15:19
架构设计
高并发
聊聊高并发
JAVA volatile 的原理与技巧
**引用《
java并发编程实战
》的描述:>当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是时时共享的,volatile变量不会被缓存在寄存器或
great_smile
·
2020-07-27 15:39
Java基础
Java并发编程实战
笔记2.0
1.用锁的最佳实践1.永远只在更新对象的成员变量时加锁2.永远只在访问可变的成员变量时加锁3.永远不在调用其他对象的方法时加锁2.信号量模型信号量模型可以简单概括为:一个计数器,一个等待队列,三个方法。init():设置计数器的初始值。down():计数器的值减1;如果此时计数器的值小于0,则当前线程将被阻塞,否则当前线程可以继续执行。up():计数器的值加1;如果此时计数器的值小于或者等于0,则
过河的小卒子
·
2020-07-27 11:45
多线程并发
Java并发编程实战
:第五章读书笔记
第五章基础构建模块摘要:本章主要介绍了Java中几个比较重要的开发模块。1.同步容器类VectorHashTable同步容器虽然是线程安全的容器,但是在执行某些操作的时候可能会抛出异常,这并不是我们想要的。例如Vector的getLast和deleteLast两个操作在两个线程中交替运行时,就有可能抛出ArrayIndexOutOfBoundsException。还有一个隐藏的问题就是这类容器在设
lcn_2017
·
2020-07-16 01:05
读书笔记
《
Java并发编程实战
》笔记1——Java线程安全基础
(摘自
Java并发编程实战
)2、无状态对象一定是线程安全的。那么,什么才称为无状态呢?有状态是指有数据存储的功能,也就是有实例变量。无状态是指不包含任何域,也不包含对其他类中域的引用。(大多数ser
ack_Finding
·
2020-07-15 20:52
多线程并发
后端开发书单
一、Java语言1.1基础《Java核心技术(卷1):基础知识(第9版)》《ThinkinginJava》《EffectiveJava》1.2并发编程《
Java并发编程实战
》1.3Spring《Spring
Ricky_Fung
·
2020-07-15 17:35
职业规划
Activity生命周期和启动模式
Android开发艺术探索》丶《Android系统源代码情景分析》数据结构和算法:《大话数据结构》丶《数据结构与算法分析》丶《编程之美》丶《剑指offer》设计模式:《Andorid源码设计模式》其它:《
Java
小元点
·
2020-07-15 10:49
java并发编程实战
读书笔记:第二章 线程安全性
我的博客地址要编写线程安全的代码,其核心是在于对共享的和可变的状态的访问。共享:变量可以被多个线程同时访问可变:变量的值在其生命周期内可以发生变化在多个线程访问摸个状态变量,其中有一个线程执行写操作,那么这时就需要采取措施来协同这些线程对这个变量的访问。Java中主要的同步机制就是使用关键字synchronized,它提供了一种独占的加锁方式。其他的方式还包括:volatile类型的变量,显式锁,
MentallyL
·
2020-07-15 07:38
java并发--高效缓存
最近阅读《
java并发编程实战
》第5章中提到的一步步建立高效可伸缩缓存代码,若有所思。缓存是最容易引起并发问题的场景之一,因为缓存的内容经常为可变状态,而作用域又相对较大。
king_eagle2015
·
2020-07-15 01:07
Java
【
Java并发编程实战
】——BlockingQueue阻塞队列
阻塞队列(BlockingQueue)是一个支持两个特殊操作的队列:获取元素时等待队列变为非空,以及存储元素时等待空间变得可用。下表中总结了这些方法:操作抛异常特殊值阻塞超时插入add(e)offer(e)put(e)offer(e,time,unit)删除remove()poll()take()poll(time,unit)检查element()peek()不适用不适用BlockingQueue
mbtlami
·
2020-07-14 23:10
java并发编程
Java并发编程实战
Java并发编程实战
-并发调度模式框架
Java并发编程实战
-并发调度模式框架加油站:抱怨是最没有营养的一件事.前言:选择串行的方式执行任务,串行处理机制通常无法提高高吞吐率和快速响应性,于是我们可以显式地为任务创建线程,为每一个请求创建一个线程来执行任务
十点攀程
·
2020-07-14 20:49
java工具类
[
Java并发编程实战
] 阻塞队列 BlockingQueue(含代码,生产者-消费者模型)
见贤思齐焉,见不贤而内自省也。—《论语》Java5.0增加了两种新的容器类型,它们是指:Queue和BlockingQueue。Queue用来临时保存一组等待处理的元素。BlockingQueue扩张了Queue接口,增加了可阻塞的插入和获取等操作。BlockingQueue通常运用于一个线程生产对象放入队列,另一个线程从队列获取对象并消费,这是典型的生产者消费者模型。生产者线程持续生产新对象并插
林里少年
·
2020-07-14 07:49
Java并发编程实战
并发编程实战学习1
基础篇这篇对应归纳《
Java并发编程实战
》基础知识部分,主要是对一些概念的理解。
zsw1017
·
2020-07-14 00:24
并发多线程
java
并发编程
多线程
《
Java并发编程实战
》专栏的回顾
背景回顾一下《
Java并发编程实战
》这个专栏,温度而知新。由于专栏内容较多,本文知识专栏的简单介绍和回顾。对了每节课下面的评论也是不错的。
卡萨巴
·
2020-07-13 23:05
Java补完系列
Java并发学习二:编译优化带来的有序性问题导致的并发Bug
Java并发学习系列文章:Java并发学习-博客专栏今天在学习极客时间专栏:《
Java并发编程实战
》第一讲01|可见性、原子性和有序性问题:并发编程Bug的源头中提到:编译器及解释器的优化可能导致意想不到的
zhang0peter
·
2020-07-13 23:11
Java并发
java
《深入理解Java虚拟机》(第三版)读书笔记(十):第十三章 线程安全与锁优化
Java虚拟机》(第三版)读书笔记(十):第十三章线程安全与锁优化线程安全Java语言中的线程安全线程安全的实现方法锁优化自旋锁与自适应自旋锁消除锁粗化轻量级锁偏向锁线程安全Java语言中的线程安全《
Java
NayelyAA
·
2020-07-13 19:42
Java并发编程-并发编程的Bug源头:可见性、原子性和有序性问题
学习极客时间上的《
Java并发编程实战
》课程之余,结合自己的理解整理一部分笔记以巩固知识。并发编程的起源1.硬件设备发展的核心矛盾:CPU、内存、I/O设备三者间存在的速度差异。
weixin_34318956
·
2020-07-13 18:13
上一页
3
4
5
6
7
8
9
10
下一页
按字母分类:
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
其他