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并发编程实战
》笔记线程安全性1.竞态条件:由于不恰当的执行时序而出现不正确的结果2.重入:当某个线程请求一个由其他线程持有的锁时,发出请求的线程就会阻塞。
林中轩
·
2020-08-24 21:35
Java
java
java并发编程实战
(笔记)
第1章简介略,觉得没有必要写笔记,一堆介绍,没有什么实际作用。第2章线程安全2.1什么是线程安全?默认情况下,我们创建n个线程,线程的执行顺序不是由我们程序员而决定的,而是由cpu的调度器决定,然后这并不是我们想要的效果,我们希望可以控制线程,操纵多线程,来帮助我们完成多个任务。那什么是线程安全啊呢?多线程在共同使用一个变量的时候,会出现争夺变量的情况,最后的结果就是,计算完毕后,计算的结果是错误
CSDNRGY
·
2020-08-24 21:05
理论篇
Java并发编程实战
读书笔记——第十章 避免活跃性危险
在安全性与活跃性之间通常存在着某种制衡。我们使用加锁来确保线程安全,但如果过度加锁,则可能导致锁顺序死锁(Lock-OrderingDeadlock)。同样,我们使用线程池和信号量来限制对资源的使用,但这些限制的行为可能会导致资源死锁(ResourceDeadLock)。Java应用程序无法从死锁中恢复,因此要避免。10.1死锁**经典的哲学家进餐问题很好地描述了死锁状况。**5个哲学家去吃中餐,
AhahaGe
·
2020-08-24 21:33
Java并发编程实战
JAVA并发编程实战
读书笔记
今天第一天读这个书吧,感觉翻译确实有些问题,有些地方读起来并不是很通顺,感觉这本书对于我这种并发编程菜鸡不是很实用,要更深一点。原子性:如count++这种操作其实是多步的操作,当并发执行它时一定注意加锁的操作原子变量类:当我们遇到这类操作时,java的并发包中提供了一个原子变量类,用于实现数值和对象引用的原子状态转换。如通过AutomicLon个替代long类型的计数器,能过确保所有对计数器状态
Sunmeok
·
2020-08-24 20:33
从0学习
java并发编程实战
-读书笔记-显式锁(11)
Java5.0增加了一种新的机制:ReentrantLock,ReentrantLock并不是一种替代内置加锁的方法,而是当内置加锁机制不适用时,作为一种可选择的高级功能。Lock和ReentrantLock与内置的加锁机制不同,Lcok提供了一种无条件的、可轮训的、定时的以及可中断的锁获取操作,所有的加锁和解锁的方法都是显式的。在Lock的实现中必须提供与内部锁相同的内存可见性语义,但在加锁语义
伟大的卷发
·
2020-08-24 15:52
java
多线程
并发编程
锁
synchronized
从0学习
java并发编程实战
-读书笔记-性能与可伸缩性(10)
线程的最主要目的是提高程序的运行性能。虽然我们希望获得更好的性能,但是始终需要把安全性放在第一位。首先需要保证程序能正确运行,然后仅当程序的性能需求和测试结果要求程序执行的更快时,才应该设法提高它的运行速度。在设计并发程序时,最重要的通常不是把性能提至极限。对性能的思考提升性能意味着用更少的资源做更多的事。当操作性能由于某种特定的资源而受到限制时,我们通常将该操作称为资源密集型的操作,例如CPU密
伟大的卷发
·
2020-08-24 15:14
java
多线程
并发编程
synchronized
后端开发
从0学习
java并发编程实战
-读书笔记-线程池的使用(8)
#在任务与执行策略之间的隐性耦合Executror框架可以将任务的提交与任务的执行解耦开。但是虽然Executor框架为制定和修改执行策略提供了很大的灵活性,但并非所有的任务都能适用所有的执行策略。有些类型的任务需要明确地制定执行策略,其中包括:依赖性任务:大多数行为正确的任务都是独立的:它们不依赖于其他任务的执行时序、执行结果或其他效果。当在线程池中执行独立任务时,可以任意修改线程池大小和配置,
伟大的卷发
·
2020-08-24 15:04
并发
线程池
java
synchronized
多线程
从0学习
java并发编程实战
-读书笔记-结构化并发应用程序(6)
在线程中执行任务在理想情况下,任务之间都是相互独立的:任务并不依赖于其他任务的状态,结果或边界效应。独立性有助于实现并发。大多数服务器的应用程序都提供了一个自然的任务边界:以独立的客户请求为边界。串行地执行任务最简单的方式就是在单个线程中串行的执行各项任务。但是现实中的web服务器的情况却并非如此。在web请求中包含了一组不同的运算和I/O操作。服务器必须处理套接字I/O以读取请求和写回响应,这些
伟大的卷发
·
2020-08-24 15:38
java
并发
并发编程
synchronized
多线程
多线程三分钟就可以入个门了!
在写文章之前通读了一遍《Java核心技术卷一》的并发章节和《
Java并发编程实战
》前面的部分,回顾了一下以前写过的笔记。
Java大蜗牛
·
2020-08-23 21:36
JAVA总结(四)----- 线程(三)
注:以下程序和概念均参考自《java编程思想》、《EffectiveJava》、《
java并发编程实战
》目录一、任务取消1、线程状态2、线程进入阻塞状态3、中断5、处理不可中断的阻塞6、ExecuotrService
和樂
·
2020-08-23 21:14
JAVA总结(四)----- 线程(二)
注:以下程序和概念均参考自《java编程思想》、《EffectiveJava》、《
java并发编程实战
》目录一、资源竞争导致线程安全性问题①、什么是资源竞争②、线程安全性③、解决资源竞争问题二、java
和樂
·
2020-08-23 21:13
线程安全
内置锁
同步
JAVA总结(四)----- 线程(一)
注:以下程序和概念均参考自《java编程思想》、《EffectiveJava》、《
java并发编程实战
》目录一、何为并发二、线程机制三、java线程的简单使用定义任务①、使用Runnable接口定义任务
和樂
·
2020-08-23 21:13
ThreadLocal
本文主要是我今天学习《
JAVA并发编程实战
》的时候,看到了一个ThreadLocal的知识。上面讲的很抽象,所以自己在网上研究了一下。
落_尘
·
2020-08-23 18:47
java
Thread
ThreadLocal
线程
线程局部变量
《
Java并发编程实战
》读书笔记四:活跃性和性能,死锁和显示锁
一、活跃性危险:死锁定义:当一个线程永远占有一个锁,而其他线程尝试去获得这个锁,那么它们将永远被阻塞。例如:当线程占有锁L时,想要获得锁M,但是同时,线程B持有M,并尝试获得L,两个线程将永远等待下去,这种情况是死锁的最简单的形式一般来说,当死锁出现时,往往是在最糟糕的时候——高负载的情况下1.锁顺序死锁锁顺序死锁的原因是:两个线程以不同的顺序来获得相同的锁。如果所有线程都以固定的顺序来获得锁,那
小七奇奇
·
2020-08-23 04:22
《
Java并发编程实战
》学习笔记 - 第二部分
第6章任务执行在并发应用中,避免为每个任务都分配一个线程线程生命周期的开销很高,在请求到达率很高的情况下将耗费大量计算资源影响性能资源消耗大,可运行的线程数超过CPU数量后,必定会有线程被闲置等待CPU时间片,但是其仍然占用内存保存其状态,给GC带来压力。而且大量线程竞争CPU的时候额外的性能开销也不可忽视稳定性,无限制的创建线程将难以避免服务器在高负载或遭到恶意攻击时崩溃,因此需要对应用程序可创
weixin_30699443
·
2020-08-22 19:35
从0学习
java并发编程实战
-读书笔记-原子性与非阻塞同步算法(13)
近年来,在并发算法领域的大多数研究都侧重于非阻塞算法,这种算法用底层的原子机器指令(例如比较和交换指令)代替锁来确保数据在并发访问中的一致性。非阻塞算法被广泛的用于在操作系统和JVM中实现线程/进程调度机制,垃圾回收机制以及锁和其他并发数据结构。与基于锁的方案相比,非阻塞算法在设计和实现上都要复杂的多,但它们在可伸缩性和活跃性上有着巨大的优势。由于非阻塞算法可以使多个线程在竞争相同的数据时不会发生
伟大的卷发
·
2020-08-22 12:48
java
并发编程
并发
多线程
同步
从0学习
java并发编程实战
-读书笔记-取消与关闭(7)
要使任务和线程能安全、快速、可靠的停下来,并不是一件容易的事。java没有提供任何机制来安全地终止线程(Thread.stop和suspend等方法提供了这样的功能,但是存在严重缺陷,应该避免使用)。但是java提供了中断(Interruption),这是一种协作机制,能够使一个线程终止另一个线程的当前工作。我们很少希望某个任务、线程或服务立即停止,因为这种立即停止会使共享的数据结构处于不一致的状
伟大的卷发
·
2020-08-22 12:58
java
synchronized
并发
并发编程
同步
从0学习
java并发编程实战
-读书笔记-对象的组合(3)
设计线程安全的类在设计线程安全类的过程中,需要包涵以下三个基本要素:找出构成对象状态的所有变量找出约束状态变量的不变性条件建立对象状态的并发访问管理策略同步策略(SynchronizationPolicy)定义了如何在不违背对象不变条件或后验条件的情况下对其状态的访问操作进行协同。收集同步需求要确保类的线程安全性,就需要保证它的不变性条件不会在并发访问的情况下被破坏。对象和变量都有一个状态空间,即
伟大的卷发
·
2020-08-22 12:56
synchronized
并发
java
锁
同步
从0学习
java并发编程实战
-读书笔记-对象的共享(2)
要编写正确的并发程序,关键在于:在访问共享的可变状态时,需要进行正确的管理。可见性publicclassNoVisibility{privatestaticbooleanready;privatestaticintnumber;privatestaticclassReaderThreadextendsThread{publicvoidrun(){while(!ready){Thread.yield
伟大的卷发
·
2020-08-22 12:47
java
并发
锁
synchronized
同步
我看过的书【按类型分类篇】
一.计算机专业类1.1内功篇《算法》(Java篇)第四版1.2语言篇《Java编程思想》第4版《深入理解Java虚拟机》第二版《
Java并发编程实战
》《Spring实战》第四版《Spring源码深度解析
老曹
·
2020-08-22 11:01
书籍
深入理解java虚拟机第十三章
第十三章线程安全与锁优化一线程安全与互斥同步内容见
java并发编程实战
笔记二非阻塞同步主要思想:先进性操作,如果没有其他线程争用共享数据,那操作就成功了;如果共享数据有争用,产生了冲突,那就采取其他补偿措施
llcream
·
2020-08-22 02:16
java并发编程
java虚拟机
单例模式与DCL双重校验锁
今天正好学习完了《
Java并发编程实战
》,该书的最后一章讲得就是JMM(Java内存模型),其中就提到了以DCL方式实现单例模式的优缺点。单例模式单例模式的概念就不在这里赘述了。
罪与罚
·
2020-08-21 15:20
java
设计模式
单例模式
从0学习
java并发编程实战
-读书笔记-活跃性问题(9)
在安全性与活跃性之间通常存在着某些制衡。我们使用加锁机制来确保线程安全,单如果过度的使用加锁,则可能导致锁顺序死锁(Lock-OrderingDeadlock)。我们使用线程池和信号量来限制对资源的使用,但这些被限制的行为可能会导致资源死锁(ResourceDeadlock)。死锁在数据库系统的设计中考虑了检测死锁以及从死锁中恢复。当数据库系统检测到一组事务发生了死锁(通过在表示等待关系的有向图中
伟大的卷发
·
2020-08-21 15:42
死锁
synchronized
java
多线程
并发编程
java的Native方法
和《
JAVA并发编程实战
》一样有的乱。。看到不懂的就查下来吧一.什么是NativeMethod简单地讲,一个NativeMethod就是一个java调用非java代码的接口。
silence---
·
2020-08-21 05:04
java后端相关学习书籍整理
一:java语言基础1:java编程思想2:effectivejava3:java核心技术卷一,卷二4:java语言程序设计5:
java并发编程实战
二:jvm1:java性能优化权威指南2:java虚拟机规范三
hiklkl
·
2020-08-21 04:30
学习之旅
java学习之路
学习之路
java并发基础(二)
《
java并发编程实战
》终于读完4-7章了,感触很深,但是有些东西还没有吃透,先把已经理解的整理一下。java并发基础(一)是对前3章的总结。这里总结一下第4、5章的东西。
weixin_30449239
·
2020-08-17 09:39
Java并发系列(六)任务的执行、取消与关闭
MartinE-mail:
[email protected]
:http://blog.csdn.net/ictcameraSinaMicroBlogID:ITCameraMainReference:《
Java
ICTCamera
·
2020-08-17 07:00
Sun
ONE
java并发编程实战
-第4章-对象的组合
4.3.5重点:理解发布状态可变的车辆追踪器理解脚注:p58页:如果将拷贝构造函数实现为this(p.x,p.y),那么会产生竞态条件,而私有构造函数则可以避免这种竞态条件.这是私有构造函数捕获模式的一个实例。publicclassMain{publicstaticvoidmain(String[]args){finalSafePointoriginalSafePoint=newSafePoint
加菲鼠
·
2020-08-17 06:55
加餐:“私有构造函数捕获模式”是怎么被设计出来的?
《
Java并发编程实战
》4.3.4章,关于程序清单4-11有一个有趣的注释:如果将拷贝构造函数实现为this(p.x,p.y),那么会产生竞态条件,而私有构造函数则可以避免这种竞态条件。
Dijkwxyz
·
2020-08-16 14:58
【小白的java成长系列】——多线程初识(多人买票问题)
本来这节内容是要到后面来说的,因为最近在弄并发的问题,推荐一本书《
java并发编程实战
》,深入的讲解了多线程问题的。
Mr-稻帅
·
2020-08-16 12:17
【java-设计基础】
小白的java成长系列
谈谈对“竞态条件”和“数据竞争”的理解
在《
JAVA并发编程实战
》中提到两个术语:"竞态条件"和"数据竞争"。
Mr_ZhangSan
·
2020-08-15 03:40
工程师
Java并发编程实战
图形用户界面应用程序总结
为什么GUI是单线程的许多人曾经尝试过编写多线程的GUI框架但最终都由于竞态条件和死锁导致的稳定性问题而又重新回到单线程的事件队列模型:采用一个专门的线程从队列中抽取事件并将它们转发到应用程序定义的事件处理器(AWT最初尝试在更大程度上支持多线程访问而正是基于在AWT中得到的经验和教训Swing在实现时决定采用单线程模型)不过我相信你还是可以成功地编写出多线程的GUI工具包只要做到:非常谨慎地设计
qq_26814945
·
2020-08-14 10:34
Java并发
【
Java并发编程实战
】-----“J.U.C”:AQS分析(二):获取锁、释放锁
上篇博客稍微介绍了一下AQS,下面我们来关注下AQS的所获取和锁释放。AQS锁获取AQS包含如下几个方法:acquire(intarg):以独占模式获取对象,忽略中断。acquireInterruptibly(intarg):以独占模式获取对象,如果被中断则中止。acquireShared(intarg):以共享模式获取对象,忽略中断。acquireSharedInterruptibly(inta
chenssy
·
2020-08-12 11:58
Java并发编程实战
Java多线程开发(二)Java同步机制
文章目录引用线程安全问题的起因计算机系统的高速缓存体系缓存体系导致的安全性问题编译器和处理器导致的有序性问题解决安全性问题的同步机制引用Java程序编译和运行的过程计算机存储结构分析(寄存器,内存,缓存,硬盘)
Java
安静的奥里维
·
2020-08-11 13:29
多线程相关
线程与进程的区别
面试中常见问题线程与进程的区别解答参考
Java并发编程实战
,从并发历史的角度进行解读。最初计算机是单任务的,程序拥有计算机所有资源。
StubbornAnt
·
2020-08-08 13:46
java并发
多线程
java
进程
Java多线程:并发编程的挑战+Java并发机制的底层实现原理
最近开始学习Java多线程相关的知识了,想要基础入门的话推荐读《Java多线程编程核心技术》,内容偏实战,想要深入理解多线程的话推荐读《Java并发编程的艺术》和《
Java并发编程实战
》,最近也在看《Java
邋遢的流浪剑客
·
2020-08-06 12:45
Java多线程
Java并发编程实战
--笔记二
第5章:基础构建模块 ConcurrentHashMap与其他并发容器一起增强了同步容器类:他们提供的迭代器不会抛出ConcurrentModificationException,因此不需要在迭代过程中对容器加锁。 ConcurrentHashMap返回的迭代器具有弱一致性,而非“及时失败”。弱一致性的迭代器可以容忍并发的修改,当创建迭代器时会遍历已有的元素,并可以在迭代器被构造后将修改操
衣舞晨风
·
2020-08-04 08:01
Java
Java
进阶
Java并发编程实战
--双重检查加锁( double check lock)与延迟初始化占位
DCL 在任何一本介绍并发的书中都会讨论声名狼藉的双重检查加锁(DCL)。 下图来自:http://zoroeye.iteye.com/blog/2058889 DCL的真正问题在于:当在没有同步的情况下读取一个共享对象时,可能发生的最糟糕的事情只是看到一个失效值(在这种情况下是一个空值),此时DCL方法将通过在持有锁的情况下在此尝试来避免这种风险。然而,实际情况远比这种情况糟糕——线
衣舞晨风
·
2020-08-04 08:01
Java
Java
进阶
Android 编程好书推荐
好书推荐:Java经典EffectiveJavaJava编程思想
Java并发编程实战
Java核心技术卷一Java核心技术卷二深入理解Java虚拟机Java程序员修炼之道Java性能优化权威指南Java虚拟机规范
雪山Li
·
2020-08-04 08:50
【Android
开发学习方法】
并发编程(一)Java并发编程的知识点梳理
来源
Java并发编程实战
&Java并发编程之美&J.U.C&深入理解java虚拟机&码出高效读书汇总知识点笔记心理背景:今年注定不平凡,越来越认识到自己的渺小,马上也就3年工作了,却发现活成了自己曾经讨厌的样子
小诚信驿站
·
2020-08-04 08:29
职场@多线程高并发@Java
《
java并发编程实战
》 第六章 任务执行框架
《
java并发编程实战
笔记》第六章结构化并发应用程序-----任务执行介绍Executor框架前的背景知识Executor框架线程池Executor的生命周期如何周期执行任务页面渲染器------并行运行的改进串行的页面渲染器
乌鸦大大
·
2020-08-04 06:41
java并发编程实战
java并发编程实战
每一个想学习Java多线程的人,手里至少有这本书或者至少要看这本书,2012年在看这本书的时候,当时正开发支付平台的后台应用,正好给了我大量的实践机会。强烈建议大家多看几遍。代码中比较容易出现bug的场景:不一致的同步,直接调用Thread.run,未被释放的锁,空的同步块,双重检查加锁,在构造函数中启动一个线程,notify或notifyAll通知错误,Object.wait和Condition
weixin_30587927
·
2020-08-04 04:24
Java并发编程实战
-学习笔记
第3章对象的共享3.1、可见性可见性概念:在多个线程对一个变更操作时,其中一个线程将变量修改后,其他线程在读取该变量的时候,得到的是修改后的值(即最新的值)。因此为确保多个线程之间对内存写入操作的可见性,必须使用同步机制。3.1.1、失效数据在多线程中,当没有同步机制时,某一线程取的数据可能是失效的数据(即该线程先取出变量,但后来被其他线程修改了,但是该线程没有被通知,所以该线程取的变量的数据是失
wan06092151
·
2020-08-04 03:55
Java多线程
java并发编程实战
-任务执行
1,在理想情况下,各个任务之间是相互独立的,任务并不依赖于其他任务的状态,结果或者边界效应。独立有助于实现并发。2,大多数服务器应用程序都提供一种自然的任务边界选择方式,以独立的客户请求为边界,这样既可以实现任务的独立性,又可以实现合理的任务规模。3,应用程序中可以通过多种策略来调度任务,3.1,最简单的策略就是单个线程中串行地执行各项任务,这种策略无法提供高吞吐率或快速响应性,同时服务器资源利用
乔布斯基
·
2020-08-04 01:04
Java并发编程
Java
线程安全
并发
Java并发编程实战
,学习笔记一
一、线程安全性定义:当多个线程访问某个类时,始终能表现出正确的行为,则称该类为线程安全的。无状态的对象一定是线程安全的,无状态:对象不包含任何域,不含对其他类域的引用,且其局部变量只能由正在执行的线程访问,一个无状态的Servlet:publicclassStatelessFactorierimplementsServlets{publicvoidservice(ServeletRequestre
realwongp
·
2020-08-04 00:18
java
并发编程
Java并发编程实战
笔记
1、什么是线程安全?当多个线程访问一个类时,如果不用考虑这些线程在运行时环境下的调度和交替执行,并且不需要额外的同步及在调用方代码不必作其他的协调,这个类的行为仍然是正确的,那么称这个类是线程安全的。2、什么是原子性:假设有操作A和B,如果从执行A的线程的角度看,当其他线程执行B时,要么B全部执行完成,要么一点都没有执行,这样A和B互为原子参照。一个原子操作是指:该操作对于所有的操作,包括它自己,
谷悦古月
·
2020-08-03 21:23
读书
Java架构师之路
Java并发编程实战
并发程序的测试总结
在测试并发程序时所面临的主要挑战在于:潜在错误的发生并不具有确定性而是随机的要在测试中将这些故障暴露出来就需要比普通的串行程序测试覆盖更广的范围并且执行更长的时间正确性测试在为某个并发类设计单元测试时首先需要执行与测试串行类时相同的分析——找出需要检查的不变性条件和后验条件幸运的话在类的规范中将给出其中大部分的条件而在剩下的时间里当编写测试时将不断地发现新的规范基于信号量的有界缓存@ThreadS
qq_26814945
·
2020-08-03 21:16
Java并发
Java并发编程实战
任务执行总结
在线程中执行任务在围绕任务执行来设计应用程序结构时第一步就是要找出清晰的任务边界在理想情况下各个任务之间是相互独立的:任务并不依赖于其他任务的状态结果或边界效应独立性有助于实现并发因为如果存在足够多的处理资源那么这些独立的任务都可以并行执行为了在调度与负载均衡等过程中实现更高的灵活性每项任务还应该表示应用程序的一小部分处理能力串行地执行任务在应用程序中可以通过多种策略来调度任务而其中一些策略能够更
qq_26814945
·
2020-08-03 21:16
Java并发
学习
java并发编程实战
的一些心得体会(一)
内存可见性当读操作和写操作在不同的线程中执行时,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情,为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制。在程序中,NoVisibility说明了当多个线程在没有同步的情况下共享数据时出现的错误。在代码中,主线程和读线程都将访问共享变量ready和number。主线程启动读线程,然后将number设为42,并
lxxiangyong
·
2020-08-03 19:11
java
多线程
《
Java并发编程实战
》第十五章 原子变量与非阻塞同步机制 读书笔记
一、锁的劣势锁定后如果未释放,再次请求锁时会造成阻塞,多线程调度通常遇到阻塞会进行上下文切换,造成更多的开销。在挂起与恢复线程等过程中存在着很大的开销,并且通常存在着较长时间的中断。锁可能导致优先级反转,即使较高优先级的线程可以抢先执行,但仍然需要等待锁被释放,从而导致它的优先级会降至低优先级线程的级别。二、硬件对并发的支持处理器填写了一些特殊指令,例如:比较并交换、关联加载/条件存储。1比较并交
love_world_
·
2020-08-03 19:19
Java基础
上一页
2
3
4
5
6
7
8
9
下一页
按字母分类:
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
其他