上一页 1 2 3 4 5 6 7 ··· 16 下一页
摘要: = 0<span style="color: 000000" ) { setHeadAndPropagate(node, r); p.next </span = <span style="color: 0000ff" null</span ; <span style="color: 008000" ... 阅读全文
posted @ 2015-11-11 19:23 chenssy 阅读(1959) 评论(0) 推荐(1) 编辑
摘要: 0L<span style="color: 000000" ) nanos </span =<span style="color: 000000" trip.awaitNanos(nanos); } </span <span style="color: 0000ff" catch</span <s... 阅读全文
posted @ 2015-11-03 12:49 chenssy 阅读(1782) 评论(0) 推荐(2) 编辑
摘要: ReentrantLock实现了标准的互斥操作,也就是说在某一时刻只有有一个线程持有锁。ReentrantLock采用这种独占的保守锁直接,在一定程度上减低了吞吐量。在这种情况下任何的“读/读”、“读/写”、“写/写”操作都不能同时发生。然而在实际的场景中我们就会遇到这种情况:有些资源并发的访问中,它大部分时间都是执行读操作,写操作比较少,但是读操作并不影响数据的一致性,如果在进行读操作时采用独占... 阅读全文
posted @ 2015-10-30 09:39 chenssy 阅读(2040) 评论(3) 推荐(6) 编辑
摘要: 信号量Semaphore是一个控制访问多个共享资源的计数器,它本质上是一个“共享锁”。 Java并发提供了两种加锁模式:共享锁和独占锁。前面LZ介绍的ReentrantLock就是独占锁。对于独占锁而言,它每次只能有一个线程持有,而共享锁则不同,它允许多个线程并行持有锁,并发访问共享资源。 独占锁它所采用的是一种悲观的加锁策略, 对于写而言为了避免冲突独占是必须的,但是对于读就没有必要了,因... 阅读全文
posted @ 2015-09-22 08:54 chenssy 阅读(1958) 评论(0) 推荐(4) 编辑
摘要: 在看Condition之前,我们先来看下面这个例子: 工厂类,用来存放、取出商品: public class Depot { private int depotSize; //仓库大小 private Lock lock; //独占锁 public Depot(){ depotSize = 0; l... 阅读全文
posted @ 2015-09-06 12:44 chenssy 阅读(2628) 评论(0) 推荐(3) 编辑
摘要: 前篇博客LZ已经分析了ReentrantLock的lock()实现过程,我们了解到lock实现机制有公平锁和非公平锁,两者的主要区别在于公平锁要按照CLH队列等待获取锁,而非公平锁无视CLH队列直接获取锁。但是对于unlock()而已,它是不分为公平锁和非公平锁的。 public void unlock() { sync.release(1); } pub... 阅读全文
posted @ 2015-08-25 08:04 chenssy 阅读(1422) 评论(0) 推荐(1) 编辑
摘要: 前一篇博客简单介绍了ReentrantLock的定义和与synchronized的区别,下面跟随LZ的笔记来扒扒ReentrantLock的lock方法。我们知道ReentrantLock有公平锁、非公平锁之分,所以lock()我也已公平锁、非公平锁来进行阐述。首先我们来看ReentrantLock的结构【图来自Java多线程系列--“JUC锁”03之 公平锁(一)】: 从上图我们可以看到,... 阅读全文
posted @ 2015-08-19 14:54 chenssy 阅读(3050) 评论(4) 推荐(2) 编辑
摘要: 注:由于要介绍ReentrantLock的东西太多了,免得各位客官看累,所以分三篇博客来阐述。本篇博客介绍ReentrantLock基本内容,后两篇博客从源码级别分别阐述ReentrantLock的lock、unlock实现机制。 ReentrantLock,可重入的互斥锁,是一种递归无阻塞的同步机制。它可以等同于synchronized的使用,但是ReentrantLock提供了比synchr... 阅读全文
posted @ 2015-08-17 00:41 chenssy 阅读(2525) 评论(1) 推荐(1) 编辑
摘要: 在java中有两种方法实现锁机制,一种是在前一篇博客中(【java7并发编程实战】-----线程同步机制:synchronized)介绍的synchronized,而另一种是比synchronized更加强大和领过的Lock。Lock确保当一个线程位于代码的临界区时,另一个线程不进入临界区,相对于synchronized,Lock接口及其实现类提供了更加强大、灵活的锁机制。 一个简单的锁 在使... 阅读全文
posted @ 2015-08-10 17:22 chenssy 阅读(3399) 评论(0) 推荐(0) 编辑
摘要: 在我们的实际应用当中可能经常会遇到这样一个场景:多个线程读或者、写相同的数据,访问相同的文件等等。对于这种情况如果我们不加以控制,是非常容易导致错误的。在java中,为了解决这个问题,引入临界区概念。所谓临界区是指一个访问共用资源的程序片段,而这些共用资源又无法同时被多个线程访问。 在java中为了实现临界区提供了同步机制。当一个线程试图访问一个临界区时,他将使用一种同步机制来查看是不是已经有其... 阅读全文
posted @ 2015-08-04 09:08 chenssy 阅读(9836) 评论(6) 推荐(9) 编辑
摘要: 学习Java并发已经有一个多月了,感觉有些东西学习一会儿了就会忘记,做了一些笔记但是不系统,对于Java并发这么大的“系统”,需要自己好好总结、整理才能征服它。希望同仁们一起来学习Java并发编程,共同进步,互相指导。 在学习Java并发之前我们需要先理解一些基本的概念:共享、可变、线程安全性、线程同步、原子性、可见性、有序性。 共享和可变 要编写线程安全的代码,其核心在于对共享的和可变的状... 阅读全文
posted @ 2015-07-26 10:53 chenssy 阅读(4677) 评论(0) 推荐(8) 编辑
摘要: LZ有一个不好的习惯,就是什么事情都喜欢做一个计划,当然不是说这样的习惯一定不好。因为LZ有点儿惰性,如果不做计划,就容易混!比如从过年结束后到现在LZ就没有怎么看过书了,哎。实属惭愧啊!!! 同时LZ在上海出差期间与几个同仁、师兄聊了很多,自己也反思了许久!得到的结果就是:LZ去年技术提升太小了... 阅读全文
posted @ 2015-04-29 19:32 chenssy 阅读(2703) 评论(15) 推荐(3) 编辑
摘要: 阮一峰,70后,英文名Frank。他原是上海财经大学世界经济博士研究生。主要研究宏观金融、货币政策与美国经济。于2008年6月获得博士学位。目前在上海一所当地大学(上海金融学院 国际经贸学院)任教。他本人也是一名IT技术人员,主要关注网站制作,并且对自由软件有着坚定不移的信念。 读他的博客是源于一个关于javascript this的用法(Javascript的this用法),个人认为它的这... 阅读全文
posted @ 2015-02-12 11:47 chenssy 阅读(1493) 评论(3) 推荐(1) 编辑
摘要: Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表。支持的图表类型有曲线图、区域图、柱状图、饼状图、散状点图和综合图表。但是参考官网的实例,我发现如果在项目中频繁使用highchart,按照它的方式还是挺复杂的,我这里所谓的复杂并不是难而是麻烦,因为你每写一个图表你就必须重新写类似于下面结构的javascript... 阅读全文
posted @ 2015-01-31 15:05 chenssy 阅读(3186) 评论(2) 推荐(7) 编辑
摘要: 乱码,我们前台展示的杀手,可能有些朋友和我的经历一样:遇到乱码先按照自己的经验来解决,如果没有解决就google,运气好一搜就可以解决,运气不好可能够你折腾一番了。LZ之所以写这个系列博客就是因为遇到这个令人讨厌的问题,虽然是小问题但又不得不解决。 在这个系列博文中LZ并没有阐述归纳乱码的方法,出现 阅读全文
posted @ 2015-01-30 16:53 chenssy 阅读(3776) 评论(1) 推荐(8) 编辑
上一页 1 2 3 4 5 6 7 ··· 16 下一页