随笔分类 - Thread
摘要:1、ABA问题 CAS 会导致“ABA问题”。 CAS 算法实现一个重要前提需要取出内存中某时刻的数据,而在下时刻比较并替换,那么在这个时间差类会导致数据的变化。 比如说一个线程 one 从内存位置 V 中取出 A,这时候另一个线程 two 也从内存中取出 A,并且 two 进行了一些操作变成了 B
阅读全文
摘要:一、Java 线程池 Java通过Executors提供四种线程池,分别为:1、newCachedThreadPool:创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。(线程最大并发数不可控制)2、newFixedThreadPool:创建一个定长线程池
阅读全文
摘要:lock 与 lockInterruptibly比较区别在于:lock 优先考虑获取锁,待获取锁成功后,才响应中断。lockInterruptibly 优先考虑响应中断,而不是响应锁的普通获取或重入获取。详细区别: ReentrantLock.lockInterruptibly允许在等待时由其它线程
阅读全文
摘要:它们最大本质的区别是:sleep()不释放同步锁,wait()释放同步锁.还有用法的上的不同是:sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()可以用notify()直接唤起.sleep和wait的区别还有:
阅读全文
摘要:上一篇讲述了并发包下的Lock,Lock可以更好的解决线程同步问题,使之更面向对象,并且ReadWriteLock在处理同步时更强大,那么同样,线程间仅仅互斥是不够的,还需要通信,本篇的内容是基于上篇之上,使用Lock如何处理线程通信。 那么引入本篇的主角,Condition,Condition 将
阅读全文
摘要:long base = System.currentTimeMills(); long now = 0; if(millis < 0){ throw new IllegalArgumentException("timeout value is negative"); } i...
阅读全文
摘要:相信很多中高级的 Java 面试者都遇到过这个问题,很多对这个不是很清楚的肯定是一脸蒙逼。内心肯定还在质疑,i++ 居然还有线程安全问题?只能说自己了解的不够多,自己的水平有限。先来看下面的示例来验证下 i++ 到底是不是线程安全的。1000个线程,每个线程对共享变量 cou...
阅读全文
摘要:你真的了解volatile关键字吗?http://blog.csdn.net/FansUnion/article/details/79495080面试题:为什么最后两行没有运行?http://blog.csdn.net/FansUnion/article/details/79...
阅读全文
摘要:public class TestJoin{public static void main(String[] args){Thread t1 = new MyThread(“线...
阅读全文
摘要:要保证T1、T2、T3三个线程顺序执行,可以利用Thread类的join方法。join方法是synchronized,所以需要获取Thread的对象锁才能进入,只有获得了锁才能...
阅读全文