Java并发编程:同步容器 为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器、并发容器、阻塞队列、Synchronizer(比如CountDownLatch)。今天我们就来讨论下同步容器。 以下是本文的目录大纲: 一.为什么会出现同步容器? 二.Jav...
分类:
编程语言 时间:
2014-08-24 22:02:03
阅读次数:
250
设计线程安全的类:
在设计线程安全类的过程中,需要包含以下三个基本要素:
找出构成对象状态的所有变量找出约束状态变量的不变性条件建立对象状态的并发访问策略
如果不了解对象的不变性条件与后验条件,那么就不能确保线程安全性。要满足在状态变量的有效值或状态转换上的各种约束条件,就需要借助于原子性与封装性。
如果在操作中包含有基于状态的先验条件,那么这个操作...
分类:
编程语言 时间:
2014-08-24 20:55:43
阅读次数:
162
Java并发编程:同步容器 为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器、并发容器、阻塞队列、Synchronizer(比如CountDownLatch)。今天我们就来讨论下同步容器。 以下是本文的目录大纲: 一.为什么会出现同步容器? 二.Jav...
分类:
编程语言 时间:
2014-08-24 16:40:42
阅读次数:
246
前言:
要编写线程安全的代码,其核心在于要对状态访问的操作进行管理,特别是对共享的和可变的状态的访问。
当多个线程访问同一个可变的状态变量时没有使用合适的同步,那么程序就会出现错误,有三种方式可以修复这个问题:
不在线程之间共享该状态变量将状态变量修改为不可变的变量在访问状态变量时使用同步
线程安全性的定义:
当多个线程访问某个类时,不...
分类:
编程语言 时间:
2014-08-23 21:43:11
阅读次数:
266
Singleton模式可以是很简单的,它的全部只需要一个类就可以完成(看看这章可怜的UML图)。但是如果在“对象创建的次数以及何时被创建”这两点上较真起来,Singleton模式可以相当的复杂,比头五种模式加起来还复杂,譬如涉及到DCL双锁检测(double checked locking)的讨论、涉及到多个类加载器(ClassLoader)协同时、涉及到跨JVM(集群、远程EJB等)时、涉及到单例对象被销毁后重建等。对于复杂的情况,本章中会涉及到其中一些[1]...
分类:
其他好文 时间:
2014-08-23 17:47:51
阅读次数:
327
1.打开在浏览器打开phpinfo页面查看PHP的版本号、TS(线程安全)版是NTS(非线程安全)版,以及VC6版本还是VC9版本
2.下载和上面版本对应的xdebug:http://xdebug.org/download.php(我的是php_xdebug-2.2.5-5.4-vc9-x86_64.dll)
3.将php_xdebug-2.2.5-5.4-vc9-x86_64.d...
分类:
系统相关 时间:
2014-08-23 14:03:31
阅读次数:
318
Struts1和2的区别。在联想区别的时候,思考一下Struts2的处理流程,这样每个区别就都能背出来了。
Struts1中的Action不是线程安全的,Struts2中每个请求创建一个新的Action,所以是线程安全的。Struts1中没有拦截器,所以每个Action的生命周期都是相同的。而在Struts2中可以自定义拦截器来实现不同的生命周期。Struts1中的请求参数通过ActionF...
分类:
其他好文 时间:
2014-08-22 21:13:29
阅读次数:
221
MapMap用于保存具有映射关系的数据。Map中key不允许重复,value可以重复,key和value之间存在单向一对一关系HashMap和Hashtable区别1 Hashtable线程安全、HashMap线程不安全,所以HashMap性能高一点2 Hashtable不允许用null做key和v...
分类:
编程语言 时间:
2014-08-22 16:11:59
阅读次数:
252
“首先请你写一个线程安全的Singleton实现。” 我拿起笔,在白板上写下早已烂熟于心的多线程安全实现:template class Singleton{public: static T& Instance() { if (m_pInstance == NULL) ...
分类:
其他好文 时间:
2014-08-22 12:46:26
阅读次数:
215
对于CAS是一种有别于synchronized的一种乐观锁实现.是一种非阻塞锁算法.CAS通过与原始预期值进行比较来确定是否修改主内存中数据的一种方案.基于一个线程的失败或者挂起不应该影响其他线程的失败或挂起这样的前提,而提出硬件层次的实现数据处理的互斥。可以自动更新共享数据,而且能够检测到其他线程的干扰,而
compareAndSet() 就用这些代替了锁定。对于实现CAS的原子类(Atom...
分类:
编程语言 时间:
2014-08-22 10:56:46
阅读次数:
261