摘要:
本章对ReentrantLock包进行基本介绍,这一章主要对ReentrantLock进行概括性的介绍,内容包括:ReentrantLock介绍ReentrantLock函数列表ReentrantLock示例在后面的两章,会分别介绍ReentrantLock的两个子类(公平锁和非公平锁)的实现原理。... 阅读全文
摘要:
一、何谓Atomic?Atomic一词跟原子有点关系,后者曾被人认为是最小物质的单位。计算机中的Atomic是指不能分割成若干部分的意思。如果一段代码被认为是Atomic,则表示这段代码在执行过程中,是不能被中断的。通常来说,原子指令由硬件提供,供软件来实现原子方法(某个线程进入该方法后,就不会被中... 阅读全文
摘要:
一、线程池的创建我们可以通过ThreadPoolExecutor来创建一个线程池。new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, milliseconds,runnableTaskQueue, handler... 阅读全文
摘要:
尊敬原创作者,转载请注明出处:http://blog.csdn.net/gemmem/article/details/8956703FutureTask是为了弥补Thread的不足而设计的,它可以让程序员准确地知道线程什么时候执行完成并获得到线程执行完成后返回的结果(如果有需要)。java.util... 阅读全文
摘要:
Exchaner用于实现两个人之间的数据交换,每个人在完成一定的事物后想与对方交换数据,第一个先拿出数据的人将一直等待第二个人拿着数据到来时,才能彼此交换数据。张孝祥老师在讲解Exchaner时的比喻: 好比两个毒贩要进行交易,一手交money,一手交drug,不管谁先来到接头地点后,就处于等待状... 阅读全文
摘要:
除了加锁外,其实还有一种方式可以防止并发修改异常,这就是将读写分离技术(不是数据库上的)。先回顾一下一个常识:1、JAVA中“=”操作只是将引用和某个对象关联,假如同时有一个线程将引用指向另外一个对象,一个线程获取这个引用指向的对象,那么他们之间不会发生ConcurrentModificationE... 阅读全文
摘要:
一、前言concurrentHashMap与ConcurrentSkipListMap性能测试在4线程1.6万数据的条件下,ConcurrentHashMap 存取速度是ConcurrentSkipListMap 的4倍左右。但ConcurrentSkipListMap有几个ConcurrentHa... 阅读全文
摘要:
1. 背景在Java5的多线程中,可以使用Callable接口来实现具有返回值的线程。使用线程池的submit方法提交Callable任务,利用submit方法返回的Future存根,调用此存根的get方法来获取整个线程池中所有任务的运行结果。方法一:如果是自己写代码,应该是自己维护一个Collec... 阅读全文
摘要:
BlockingQueue作为线程容器,可以为线程同步提供有力的保障,其主要用到的方法包括:[java]view plaincopyadd(Eo);//将指定的元素添加到此队列中(如果立即可行),在成功时返回true,其他情况则抛出IllegalStateException。drainTo(Col... 阅读全文
摘要:
ExecutorService接口继承了Executor接口,定义了一些生命周期的方法Java代码publicinterfaceExecutorServiceextendsExecutor{voidshutdown();ListshutdownNow();booleanisShutdown();bo... 阅读全文