- 博客(14)
- 资源 (3)
- 收藏
- 关注
原创 java 中 ReentrantReadWriteLock的读锁和写锁的使用
jdk文档中关于ReentrantReadWriteLock类使用的一个很好的例子,以下是具体的介绍: 在使用某些种类的 Collection 时,可以使用 ReentrantReadWriteLock 来提高并发性。通常,在预期 collection很大,读取者线程访问它的次数多于写入者线程,并且 entail 操作的开销高于同步开销时,这很值得一试。例如,以下 是一个使用 TreeM...
2012-11-30 17:14:05 255
原创 java 多线程中Semaphore信号量
Semaphore信号量: 可以维护当前访问自身的线程个数,并提供了同步机制。使用Semaphore可以控制同时访问资源的线程个数,例如实现一个文件允许的并发访问数。 获得一项前,每个线程必须从信号量获取许可(semaphore.acquire()),从而保证可以使用该项。该线程结束后,将项返回到池中并将许可返回到该信号量,从而允许其他线程获取该项。注意,调用 ac...
2012-11-30 15:39:29 93
原创 Java 文件锁的使用
多线程-内部锁、重进入 多线程 java提供了强制原子性的内部锁机制:synchronized块。一个synchronized块有两个部分:锁对象的引用和锁保护的代码块。synchronized方法上面的锁也分两种:对象锁和类锁。当该方法为static方法时,该方法获取到的锁为该Class对象锁。 重进入? 当某个线程进入A方法的时候获取...
2012-11-30 13:21:59 214
原创 【转】线程安全与锁优化
转载自http://xussen.iteye.com/blog/1677402 Brian Goetz对线程安全的定义:当多个线程访问一个对象时,如果不考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调度方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的 并发处理的广泛应用是使得Amdahl定律...
2012-11-29 16:17:41 79
原创 java synchronized静态同步方法与非静态同步方法,同步语句块
进行多线程编程,同步控制是非常重要的,而同步控制就涉及到了锁。 对代码进行同步控制我们可以选择同步方法,也可以选择同步块,这两种方式各有优缺点,至于具体选择什么方式,就见仁见智了,同步块不仅可以更加精确的控制对象锁,也就是控制锁的作用域,何谓锁的作用域?锁的作用域就是从锁被获取到其被释放的时间。而且可以选择要获取哪个对象的对象锁。但是如果在使用同步块机制时,如果使...
2012-11-29 12:09:54 185
原创 java synchronized内置锁的可重入性和分析总结
最近在读<<Java并发编程实践>>,在第二章中线程安全中降到线程锁的重进入(Reentrancy) 当一个线程请求其它的线程已经占有的锁时,请求线程将被阻塞。然而内部锁是可重进入的,因此线程在试图获得它自己占用的锁是,请求会成功。重进入意味着请求是基于“每一个线程”,而不是基于“每一次调用”(互斥锁是基于每次调用的)。重进入的实现是通...
2012-11-28 17:01:27 156
原创 【转】volatile原理与技巧
转载请注明原文链接:http://kenwublog.com/the-theory-of-volatilevolatile原理与技巧volatile, 用更低的代价替代同步为什么 使用volatile比同步代价更低? 同步的代价, 主要由其覆盖范围决定, 如果可以降低同步的覆盖范围, 则可以大幅提升程序性能.而volatile的覆盖范围仅仅变量级别的. 因此它的同步代价很低...
2012-11-28 15:55:04 139
原创 java并发编程实践笔记
java并发编程实践笔记1, 保证线程安全的三种方法 :a, 不要跨线程访问共享变量b, 使共享变量是 final类型的c, 将共享变量的操作加上同步2, 一开始就将类设计成线程安全的 , 比在后期重新修复它 ,更容易 .3, 编写多线程程序 , 首先保证它是正确的 , 其次再考虑性能 .4, 无状态或只读对象永远是线程安全的 .5, 不要将一个共享变量裸露在多线程环境下...
2012-11-28 15:03:07 55
原创 【转】java并发编程-Executor框架
转载自 http://www.iteye.com/topic/366591 Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。他们的关系为: 并发编程的一种编程方式是把任务拆分为...
2012-11-28 13:20:47 81
原创 【转】Java 理论与实践: 流行的原子
转载:https://www.ibm.com/developerworks/cn/java/j-jtp11234/#1.0 十五年前,多处理器系统是高度专用系统,要花费数十万美元(大多数具有两个到四个处理器)。现在,多处理器系统很便宜,而且数量很多,几乎每个主要微处理器都内置了多处理支持,其中许多系统支持数十个或数百个处理器。 要使用多处理器系统的功能,通...
2012-11-28 09:46:06 63
原创 Java中原子操作类原则
java.util.concurrent.atomic 包中包括了原子变量( atomic variable )类,这些类用来实现数字和对象引用的原子状态的转换,把long类型的计数器替换成AtomicLong类型的,我们可以确保所有访问计数器状态的操作都是原子的,计数器是线程安全的了,而计数器的状态就是servlet的状态,所以我们的servlet再次车归纳为线程安全的了。...
2012-11-27 14:50:24 123
原创 java中 避免过多的使用同步
避免过多的使用同步,过多的使用同步可能会导致性能降低,死锁,甚至不确定的行为。 为了避免死锁的危险,在一个被同步的方法或者代码块中,永远不要放弃对客户的控制。 在一个被同步的区域内部,不要调用一个不被改写的公有或者受保护的方法,从包含 该同步区域的类的角度来看,这样的方法是一个外来者。 可以可以为止这个外来方法提供一个实现,并且在该方法中创建另一个线程,在回调到这个类中。 然...
2012-11-22 15:41:43 137
原创 java中 对共享可变数据的同步访问
对共享可变数据的同步访问 synchronized 关键字可以保证在同一个实践,只有一个线程在执行一条语句, 或者一段代码块。不同概念不仅包括互斥,而且包括一个对象被一个线程修改的时候, 可以阻止另一个线程观察到内部不一致的状态。 当对象被创建的时候处于一直的状态,当有方法访问他的时候他就被锁定了,这些方法 观察到对象的状态,并且可能会引起一个状态转变即把对...
2012-11-22 10:19:38 141
原创 [转]年度最实用50款免费Android应用推荐
据国外媒体报道,有人说Android应用市场比iPhone应用市场更像Lidl(德国大型连锁超市)和Asda(英国超市名),拥有数目庞大、种类齐全的商品即Android应用。Android应用市场上的许多好东西都是免费的,感谢开发人员为我们提供了如此多好用的程序。这里要向大家介绍的Android应用都是免费的。1.SeesmicSeesmic是一个基于视频的在线微博客平台, 以视频为最...
2012-11-08 16:39:04 6260
jQuery最新API
2012-11-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人