什么是线程安全性:要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享的和可变的状态的访问。“共享”意味着变量可以由多个线程同时访问,而“可变”则意味着变量的值在其生命周期内可以发生变化。一个对象是否需要线程安全的,取决于他是否被多个线程..
分类:
编程语言 时间:
2014-05-27 03:32:21
阅读次数:
256
Tomcat 在 7.0 以前的版本都是使用commons-dbcp做为连接池的实现,但是
dbcp 饱受诟病,原因有:dbcp 是单线程的,为了保证线程安全会锁整个连接池dbcp 性能不佳dbcp 太复杂,超过 60 个类dbcp 使用静态接口,在
JDK 1.6 编译有问题dbcp 发展滞后因此...
分类:
数据库 时间:
2014-05-24 06:14:58
阅读次数:
483
1. ArrayList,Vector, LinkedList 的存储性能和特性
ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按 序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector 由于使用了 synchroni zed 方法(线程安全),通常性能上较 ArrayLi...
分类:
移动开发 时间:
2014-05-22 11:18:21
阅读次数:
266
线程安全问题的由来
在传统的Web开发中,我们处理Http请求最常用的方式是通过实现Servlet对象来进行Http请求的响应.Servlet是J2EE的重要标准之一,规定了Java如何响应Http请求的规范.通过HttpServletRequest和HttpServletResponse对象,我....
分类:
其他好文 时间:
2014-05-20 01:41:27
阅读次数:
425
重入即表示重复进入,首先它意味着这个函数可以被中断,其次意味着它除了使用自己栈上的变量以外不依赖于任何环境(包括static),这样的函数就是purecode(纯代码)可重入,可以允许有该函数的多个副本在运行,由于它们使用的是分离的栈,所以不会互相干扰。,常见的情况是,程序执行到某个函数foo(.....
分类:
编程语言 时间:
2014-05-16 04:10:01
阅读次数:
345
我们知道队列
就是在内容内存分配连续的内存空间,实现先进先出的逻辑,FIFO(LILO),这里用到了.net 4.0
的ConcurrentQueue类,(带线程安全的队列类),也可以用Queue ,多线程中自行同步。代码可直接复制运行 1 using System; 2
using System....
分类:
其他好文 时间:
2014-05-16 04:07:11
阅读次数:
276
我们再介绍一个在多线程环境中经常使用的类ThreadLocal,它是java为解决多线程程序的并发问题提供了一种新的方向,使用这个ThreadLocal类可以帮助开发者很简单地编写出简洁的程序,并且是线程安全的。ThreadLocal很容易让人误解,认为是一个“本地线程”,其实ThreadLocal...
分类:
其他好文 时间:
2014-05-15 17:22:06
阅读次数:
259
synchronized这类线程同步的机制可以解决多线程并发问题,在这种解决方案下,多个线程访问到的,都是同一份变量的内容。为了防止在多线程访问的过程中,可能会出现的并发错误。不得不对多个线程的访问进行同步,这样也就意味着,多个线程必须先后对变量的值进行访问或者修改,这是一种以延长访问时间来换取线程安全性的策略。...
分类:
其他好文 时间:
2014-05-15 13:11:27
阅读次数:
335
上篇通过一个简单的例子说明了线程安全与不安全,在例子中不安全的情况下输出的结果恰好是逐个递增的(其实是巧合,多运行几次,会产生不同的输出结果),为什么会产生这样的结果呢,因为建立的Count对象是线程共享的,一个线程改变了其成员变量num值,下一个线程正巧读到了修改后的num,所以会递增输出。
要说明线程同步问题首先要说明Java线程的两个特性,可见性和有序性。多个线程之间是...
分类:
编程语言 时间:
2014-05-15 12:15:49
阅读次数:
355