阻塞线程与非阻塞线程

  阻塞线程:AB线程有一个公共的资源,比如说变量params,当A访问params时,给params加锁,而这时B要访问params时,它只有等待A释放params锁时,才可以访问;

 非阻塞线程:AB线程有一个公共的资源,比如说变量params,当A访问params时,B也可以进行访问操作;

上网查了一下资料,说非阻塞线程的性能高于阻塞线程,我就想是否可以使用非阻塞线程写出票的程序用来提高出票速度,然后我做了简单的测试:

测试环境:

164win7系统,4g内存;

 2eclipse编译器;

测试背景:

1)  票的总数为10000,分别使用非阻塞,阻塞方法编写线程进行出票,然后分别开100个线程去跑,计算当票的数量为0时,所使用的时间;

测试结果:

1)  阻塞线程

主要代码:


运行时间:


2)  非阻塞线程

主要代码:

运行时间:


可以看出阻塞线程比非阻塞线程慢很多。

阻塞,我使用的是synchronized,非阻塞用的是cassynchronized是悲观锁,而cas是乐观锁。

悲观锁:指对数据被外界修改保持保守态度,就是说在进行操作数据时,数据可能会被外界修改,所以在整个操作数据过程中,都会加上锁;

乐观锁:与悲观锁相反,在进行操作数据的时候,不会加上锁,而是通过版本号或者其他标志来对数据进行对比,然后在决定是否修改数据;

所以就造成上面的结果。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值