![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程编程
记录点滴人生
这个作者很懒,什么都没留下…
展开
-
synchronized块
最近阅读网上关于synchronized块的资料,说法也不尽相同,经过自己代码测试,以下仅为个人理解,如有错误,麻烦指出问题所在,谢谢~synchronized块参数表示的是以什么为锁,参数可以为固定字符串,this,数组对象等等,但不能为int等8种基本数据类型,只有锁相同,才能导致等待。public class SynchronizedKuai{ private static i原创 2013-12-24 10:05:57 · 873 阅读 · 0 评论 -
JAVA CAS原理深度分析
看了一堆文章,终于把Java CAS的原理深入分析清楚了。感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! 参考文档:http://www.blogjava.net/xylz/archive/2010/07/04/325206.htmlhttp://blog.hesey.net/2011/09/resolve-aba-by-atomicstampedrefe转载 2016-11-12 17:08:32 · 314 阅读 · 0 评论 -
一分钟教你知道乐观锁和悲观锁的区别
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁转载 2016-11-12 16:14:38 · 309 阅读 · 0 评论 -
java.util.concurrent并发包诸类概览
也可以任意时刻调用方法动态增减;每一个party都有unarrived和arrived两种状态,可以通过调用arriveXXX方法使得它从unarrived变成arrived;每一个线程到达barrier后会等待(调用arriveAndAwaitAdvance方法),一旦所有party都到达(即arrived的party数量等于registered的数量),就会触发advance操作,同时转载 2016-08-08 18:02:33 · 654 阅读 · 0 评论 -
BlockingQueue详解
前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。认识BlockingQueue阻塞队列,顾名思义,首先它是一个队列,而一个转载 2014-08-25 10:55:02 · 647 阅读 · 0 评论 -
Thread_wait、notify、notifyAll的使用方法
wait()、notify()、notifyAll()是三个定义在Object类里的方法,可以用来控制线程的状态。这三个方法最终调用的都是jvm级的native方法。随着jvm运行平台的不同可能有些许差异。•如果对象调用了wait方法就会使持有该对象的线程把该对象的控制权交出去,然后处于等待状态。•如果对象调用了notify方法就会通知某个正在等待这个对象的控制权的线程可以继续运行转载 2014-07-29 13:17:38 · 671 阅读 · 0 评论 -
Java线程池使用说明
一 简介线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的。在jdk1.5之后这一情况有了很大的改观。Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供了非常大的帮助。二:线程池线程池的作用:线程池作用就是限制系统中执行线程的数量转载 2014-03-25 09:24:23 · 703 阅读 · 0 评论 -
ConcurrentHashMap之实现原理
ConcurrentHashMap是Java 5中支持高并发、高吞吐量的线程安全HashMap实现。在这之前我对ConcurrentHashMap只有一些肤浅的理解,仅知道它采用了多个锁,大概也足够了。但是在经过一次惨痛的面试经历之后,我觉得必须深入研究它的实现。面试中被问到读是否要加锁,因为读写会发生冲突,我说必须要加锁,我和面试官也因此发生了冲突,结果可想而知。还是闲话少说,通过仔细阅读源代码转载 2014-04-03 10:26:03 · 894 阅读 · 0 评论 -
spring mvc与struts的区别
spring3mvc与struts2比较项目刚刚换了web层框架,放弃了struts2改用spring3mvc 当初还框架的时候目的比较单纯---springmvc支持rest,小生对restful url由衷的喜欢不用不知道 一用就发现开发效率确实比struts2高 我们用struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置 spring3 mvc可以转载 2014-03-09 23:03:16 · 1004 阅读 · 0 评论 -
Spring中Singleton模式的线程安全
最近一直在想spring中的线程安全问题,虽然被师父教育说一定是安全的,但是我一直也没想通,也一直没死心,最后看到了一篇文章,讲的很好,很详细,也回答了我一直在纠结的问题,下面就是转载过来的文章。spring中管理的bean实例默认情况下是单例的[sigleton类型],就还有prototype类型 按其作用域来讲有sigleton,prototype,request,sess转载 2014-03-09 23:11:51 · 1098 阅读 · 0 评论 -
Java CAS 和ABA问题
独占锁:是一种悲观锁,synchronized就是一种独占锁,会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。乐观锁:每次不加锁,假设没有冲突去完成某项操作,如果因为冲突失败就重试,直到成功为止。一、CAS 操作乐观锁用到的机制就是CAS,Compare and Swap。CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V转载 2016-11-14 09:46:45 · 305 阅读 · 0 评论