Testng是一款非常优秀的测试框架,真正从测试角度出发,为测试所想。在测试过程中我们经常会遇到对某一个场景做并发请求,主要想了解该程序在并发时是否会有异常或者没考虑到的其他情况,这时往往不是要做性能测试,又不能因为这个而去用LR来做这件事情。如果你对Testng比较了解,你会发现只需2个简单的注释...
分类:
编程语言 时间:
2014-11-10 21:11:22
阅读次数:
162
ArrayBlockingQueue是个有数组支持的有界的阻塞队列。该队列按照先进先出FIFO的原理对元素排序,插入新元素市场队列的尾部,获取新元素是操作队列的开始处。一旦见了建立了缓存区,就不能再增加其容量,试图从已满的队列中方式元素会导致操作阻塞;试图从空的队列中提取元素将导致阻塞。
提拱了四种方法,只有put(),take()才会发生阻塞。
下面是阻塞队列的例子。
packag...
分类:
编程语言 时间:
2014-11-09 19:35:51
阅读次数:
229
一般的,我们知道快排是优于冒泡排序的,下面就让我们用多线程验证一下,具体操作:先产生一个随机整数n(大于10),再产生n个随机正数存放于数组中,然后创建两个线程并发地对锁生成的随机整数进行排序,其中一个线程采用冒泡排序,另一个线程采用快速排序,最后比较这两个线程哪个先完成排序
闲话少说哈,上代码:
结果分析:
(1)当随机数个数取值为10、1...
分类:
编程语言 时间:
2014-11-09 18:09:19
阅读次数:
195
JDK1.5之后有提供了另一种加锁方式Lock锁。Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。此实现允许更灵活的结构,可以具有差别很大的属性,可以支持多个相关的Condition 对象。
锁是控制多个线程对共享资源进行访问的工具。通常,锁提供了对共享资源的独占访问。一次只能有一个线程获得锁,对共享资源的所有访问都需要首先获得锁。不过,某些锁可能允许对共享资源并发访问,如ReadWriteLock 的读取锁。
synchronized 方法或语句的使用提供了对与每...
分类:
编程语言 时间:
2014-11-09 01:08:16
阅读次数:
305
在java中synchronized是多个线程共享同一段代码的锁。
当有多个线程并发执行同一块代码块时,加锁可以让一段时间内只有一个线程在执行,保证了业务的原子操作。
例如下面:
package andy.thread.traditional.test;
/**
* @author Zhang,Tianyou
* @version 2014年11月8日 下午11:02:53
*/
...
分类:
编程语言 时间:
2014-11-08 23:37:15
阅读次数:
302
JDK1.5之后,提供了自带的线程池,以便我们更好的处理线程并发问题。
Executor类给我提供了多个线程池创建的方式:
创建固定的线程池 Executors.newFixedThreadPool(2)
创建可变的缓冲线程池 Executors.newCachedThreadPool()
创建单一的线程池 Executors.newSingleThreadExecuto...
分类:
编程语言 时间:
2014-11-08 19:43:03
阅读次数:
252
随着计算机技术的发展,编程模型也越来越复杂多样化。但多线程编程模型是目前计算机系统架构的最终模型。随着CPU主频的不断攀升,X86架构的硬件已经成为瓶,在这种架构的CPU主频最高为4G。事实上目前3.6G主频的CPU已经接近了顶峰。 如果不能从根本上更新当前CPU的架构(在很长一段时间内还不太可能....
分类:
编程语言 时间:
2014-11-07 14:40:36
阅读次数:
221
在看《Cplusplus Concurrency in Action Practical Multithreading》。记录一下学习过程,这是第四章开始,关于等待一次性事件。...
分类:
其他好文 时间:
2014-11-05 21:35:29
阅读次数:
264
1、并发可以提高程序运行速度,能够更好的管理程序设计。
2、在多处理器主机上,可以在这些处理器上运行多个任务,提高吞吐量;然而在单个处理器的主机上,使用并发的话,貌似要比同步的执行的程序资源开销大,因为其中增加了所谓上下文切换的代价,要从一个任务切换到另一个任务,到这里,我们可能认为在但处理器的主机上,使用并发并不能提高程序的性能,反而会消耗更多资源,然而有个问题使得并发在单个处理器上变的不同,...
分类:
编程语言 时间:
2014-11-02 22:32:56
阅读次数:
209
在聊聊高并发(十一)实现几种自旋锁(五)中使用了java.util.concurrent.atomic.AtomicStampedReference原子变量指向工作队列的队尾,为何使用AtomicStampedReference原子变量而不是使用AtomicReference是因为这个实现中等待队列的同一个节点具备不同的状态,而同一个节点会多次进出工作队列,这就有可能出现出现ABA问题。...
分类:
编程语言 时间:
2014-10-30 15:29:14
阅读次数:
245