摘要: Java 线程面试问题 在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程的问题。在投资银行业务中多线程和并发是一个非常受欢迎的话题,特别是电子交易发展方面相关的。他们会问面试者很多令人混淆的Java线程问题。... 阅读全文
posted @ 2014-09-17 13:07 小人物702 阅读(320) 评论(0) 推荐(0) 编辑
摘要: 新的锁定类提高了同步性 —— 但还不能现在就抛弃 synchronizedJDK 5.0为开发人员开发高性能的并发应用程序提供了一些很有效的新选择。例如,java.util.concurrent.lock中的类ReentrantLock被作为 Java 语言中synchronized功能的替代,它具... 阅读全文
posted @ 2014-09-17 13:05 小人物702 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 本章对ReentrantLock包进行基本介绍,这一章主要对ReentrantLock进行概括性的介绍,内容包括:ReentrantLock介绍ReentrantLock函数列表ReentrantLock示例在后面的两章,会分别介绍ReentrantLock的两个子类(公平锁和非公平锁)的实现原理。... 阅读全文
posted @ 2014-09-16 21:57 小人物702 阅读(1844) 评论(0) 推荐(0) 编辑
摘要: 一、何谓Atomic?Atomic一词跟原子有点关系,后者曾被人认为是最小物质的单位。计算机中的Atomic是指不能分割成若干部分的意思。如果一段代码被认为是Atomic,则表示这段代码在执行过程中,是不能被中断的。通常来说,原子指令由硬件提供,供软件来实现原子方法(某个线程进入该方法后,就不会被中... 阅读全文
posted @ 2014-09-16 21:30 小人物702 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 一、线程池的创建我们可以通过ThreadPoolExecutor来创建一个线程池。new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, milliseconds,runnableTaskQueue, handler... 阅读全文
posted @ 2014-09-16 15:43 小人物702 阅读(1893) 评论(0) 推荐(0) 编辑
摘要: 尊敬原创作者,转载请注明出处:http://blog.csdn.net/gemmem/article/details/8956703FutureTask是为了弥补Thread的不足而设计的,它可以让程序员准确地知道线程什么时候执行完成并获得到线程执行完成后返回的结果(如果有需要)。java.util... 阅读全文
posted @ 2014-09-16 15:13 小人物702 阅读(316) 评论(0) 推荐(0) 编辑
摘要: Exchaner用于实现两个人之间的数据交换,每个人在完成一定的事物后想与对方交换数据,第一个先拿出数据的人将一直等待第二个人拿着数据到来时,才能彼此交换数据。张孝祥老师在讲解Exchaner时的比喻: 好比两个毒贩要进行交易,一手交money,一手交drug,不管谁先来到接头地点后,就处于等待状... 阅读全文
posted @ 2014-09-16 14:42 小人物702 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 除了加锁外,其实还有一种方式可以防止并发修改异常,这就是将读写分离技术(不是数据库上的)。先回顾一下一个常识:1、JAVA中“=”操作只是将引用和某个对象关联,假如同时有一个线程将引用指向另外一个对象,一个线程获取这个引用指向的对象,那么他们之间不会发生ConcurrentModificationE... 阅读全文
posted @ 2014-09-16 13:26 小人物702 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 一、前言concurrentHashMap与ConcurrentSkipListMap性能测试在4线程1.6万数据的条件下,ConcurrentHashMap 存取速度是ConcurrentSkipListMap 的4倍左右。但ConcurrentSkipListMap有几个ConcurrentHa... 阅读全文
posted @ 2014-09-16 13:14 小人物702 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 1. 背景在Java5的多线程中,可以使用Callable接口来实现具有返回值的线程。使用线程池的submit方法提交Callable任务,利用submit方法返回的Future存根,调用此存根的get方法来获取整个线程池中所有任务的运行结果。方法一:如果是自己写代码,应该是自己维护一个Collec... 阅读全文
posted @ 2014-09-16 12:08 小人物702 阅读(1149) 评论(0) 推荐(0) 编辑