JAVA中有许多线程安全的基础模块类,一般情况下,这些基础模块类能满足我们需要的所有操作,但更多时候,他们并不能满足我们所有的需要。此时,我们需要想办法在不破坏已有的线程安全类的基础上添加一个新的原子操作。有如下4中方案: 1 修改类的源码,以添加新的原子操作 2 继承该线程安全类,并添加原子操作 ...
分类:
编程语言 时间:
2017-01-17 23:10:07
阅读次数:
272
设计线程安全类 套路一: 实例限制 假如现在有一个非线程安全类, 让它可以被多线程安全访问, 可以做一层封装. 多线程 只通过 封装类进行访问. 注意事项, 一定要加对锁! 套路二: 返回深拷贝 若一个对象是可变对象, 假如不是太频繁地作为参数或者返回值传递, 可以通过每次在传递时, 构建深拷贝来保 ...
分类:
编程语言 时间:
2017-01-07 22:22:49
阅读次数:
197
一、集合 1、集合类也称容器类,主要负责保存、盛装其他数据。 2、集合可以保存数量不确定的数据,保存具有映射关系的数据(也称关联数组)。 3、Java5后提供一些多线程安全的集合类,放在java.util.concurrrent。(utility的缩写,意为多用途的,实用的) 4、集合只能保存对象( ...
分类:
编程语言 时间:
2017-01-05 07:39:08
阅读次数:
248
iOS多线程安全的概念在很多地方都会遇到,为什么不安全,不安全又该怎么去定义,其实是个值得深究的话题。 共享状态,多线程共同访问某个对象的property,在iOS编程里是很普遍的使用场景,我们就从Property的多线程安全说起。 Property 当我们讨论property多线程安全的时候,很多 ...
分类:
移动开发 时间:
2016-12-11 07:55:45
阅读次数:
236
一个生产线程,一个消费线程,程序不存在安全问题 两个生产线程,两个消费线程,出现了生产两次,消费一次或者生产一次,消费两次的情况。 出现问题的原因是:线程被唤醒之后没有回去判断标记,直接继续执行后边的代码。 解决方式:让线程被唤醒之后不是直接执行后边的代码,而是回去判断标志,这个问题可以通过把if改 ...
分类:
编程语言 时间:
2016-12-02 01:21:23
阅读次数:
204
发现问题 需求很简单,大致就是要批量往数据库写数据,于是打算用Parallel并行的方式写入,希望能利用计算机多核特性加快程序执行速度。想的很美好,于是快速撸了类似下面的一串代码: 可意外的是竟然无情的报错了: 奇葩的是当我再次刷新的时候异常又不一样了,于是连着刷新好多次,总结出现过的异常有下面这些 ...
分类:
数据库 时间:
2016-11-14 01:37:01
阅读次数:
260
python 关于redis的基本操作网上已经很多了,这里主要介绍点个人觉得有意思的内容1.redis的事务操作以及watch 乐观锁;后面描述2.tornado下异步使用redis的方式 redis是单进程单线程模型,本身应对外部请求的是单任务的,也是多线程安全的,这个大家都应该知道的, 所以才会 ...
分类:
编程语言 时间:
2016-11-07 07:48:10
阅读次数:
312
一、简单说明 1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 2.FMDB的优点 使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码 对比苹果自带的Core Data框架,更加轻量级和灵活 提供了多线程安全的数据库操作方法, ...
分类:
数据库 时间:
2016-10-25 19:05:58
阅读次数:
263
Why ThreadLocal? 无论如何,要编写一个多线程安全(Thread-safe)的程序是困难的,为了让线程共享资源,必须小心地对共享资源进行同步,同步带来一定的效能延迟,而另一方面,在处理同步的时候,又要注意对象的锁定与释放,避免产生死结,种种因素都使得编写多线程程序变得困难。 尝试从另一 ...
分类:
数据库 时间:
2016-09-29 21:10:36
阅读次数:
185
1.多线程安全问题 1)synchronized关键字:如何加锁的问题,选择synchronized方法还是synchnized代码块。 选择哪个锁问题,this对象,还是class对象(针对static方法或者变量),或者object对象 推荐使用同步代码块,因为加锁灵活,可以自己选择使用哪个锁, ...
分类:
编程语言 时间:
2016-09-29 20:37:13
阅读次数:
158