转载自:http://blog.csdn.net/ns_code/article/details/17539599为了方便各位网友学习以及方便自己复习之用,将Java并发编程系列内容系列内容按照由浅入深的学习顺序总结如下,点击相应的标题即可跳转到对应的文章【Java并发编程】实现多线程的两种方法【J...
分类:
编程语言 时间:
2014-07-17 18:15:26
阅读次数:
202
一、可见性什么是可见性?Java线程安全须要防止某个线程正在使用对象状态而还有一个线程在同一时候改动该状态,并且须要确保当一个线程改动了对象的状态后,其它线程能够看到发生的状态变化。 后者就是可见性的描写叙述即多线程能够实时获取其它线程改动后的状态。 *** 待补充 两个工人同一时候记录生产产品.....
分类:
编程语言 时间:
2014-07-16 23:07:41
阅读次数:
218
ReentrantLock 一个可重入的互斥锁 Lock,它具有与使用 synchronized 方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大。这个类主要基于AQS(AbstractOwnableSynchronizer)封装的 公平与非公平锁。所谓公平锁就是指在多个线程的争...
分类:
编程语言 时间:
2014-07-09 14:31:42
阅读次数:
306
造成开销的操作包含:1. 线程之间的协调(比如:锁、触发信号以及内存同步等)2. 添加?的上下文切换3. 线程的创建和销毁4. 线程的调度一、对性能的思考1 性能与可伸缩性执行速度涉及下面两个指标:某个指定的任务单元须要“多快”才干处理完毕、计算资源一定的情况下,能完毕“多少”工作。可伸缩性:当添加...
分类:
编程语言 时间:
2014-06-26 21:19:51
阅读次数:
330
Java内存模型是保障多线程安全的根基,这里仅仅是认识型的理解总结并未深入研究。
一、什么是内存模型,为什么需要它
Java内存模型(Java Memory Model)并发相关的安全发布,同步策略的规范、一致性等都来自于JMM。
1 平台的内存模型
在架构定义的内存模型中将告诉应用程序可以从内存系统中获得怎样的保证,此外还定义了一些特殊的指令(称为内存栅栏或栅栏),当...
分类:
编程语言 时间:
2014-06-20 11:36:41
阅读次数:
289
ConcurrentHashMap
ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和HashTable功能相同但是线程安全的方法。ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地尽量地小,不用对整个ConcurrentHashMap加锁。
ConcurrentHashM...
分类:
编程语言 时间:
2014-06-08 15:38:47
阅读次数:
326
一、锁的劣势
锁定后如果未释放,再次请求锁时会造成阻塞,多线程调度通常遇到阻塞会进行上下文切换,造成更多的开销。
在挂起与恢复线程等过程中存在着很大的开销,并且通常存在着较长时间的中断。
锁可能导致优先级反转,即使较高优先级的线程可以抢先执行,但仍然需要等待锁被释放,从而导致它的优先级会降至低优先级线程的级别。
二、硬件对并发的支持
处理器填写了一些特殊指令,例如:比较并交换...
分类:
编程语言 时间:
2014-06-07 14:25:12
阅读次数:
310
一、死锁
所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。
百科百科
当两个以上的运算单元,双方都在等待对方停止运行,以取得系统资源,但是没有一方提前退出时,这种状况,就称为死锁。维基百科
1. 顺序死锁
最少有两个锁,一个线程获取到A锁需要获取B锁才能进行操作,而另外一个线程获取到了B锁,需...
分类:
编程语言 时间:
2014-06-03 03:15:52
阅读次数:
245
一、为什么GUI是单线程化
传统的GUI应用程序通常都是单线程的。
1. 在代码的各个位置都需要调用poll方法来获得输入事件(这种方式将给代码带来极大的混乱)
2. 通过一个“主事件循环(Main Event Loop)”来间接地执行应用程序的所有代码。
如果在主事件循环中调用的代码需要很长时间才能执行完成,那么用户界面就会“冻结”,直到代码执行完成。这是因为只有当执行控制权返回到主事件...
分类:
编程语言 时间:
2014-06-03 01:28:22
阅读次数:
221
造成开销的操作包括:
1. 线程之间的协调(例如:锁、触发信号以及内存同步等)
2. 增加的上下文切换
3. 线程的创建和销毁
4. 线程的调度
一、对性能的思考
1 性能与可伸缩性
运行速度涉及以下两个指标:
某个指定的任务单元需要“多快”才能处理完成、计算资源一定的情况下,能完成“多少”工作。
可伸缩性:
当增加计算资源时(例如:CPU、内存、存储容器或...
分类:
编程语言 时间:
2014-06-01 09:56:52
阅读次数:
271