指令重排的基本原则: a.程序顺序原则:一个线程内保证语义的串行性 b.volatile规则:volatile变量的写,先发生于读 c.锁规则:解锁(unlock)必然发生在随后的加锁(lock)前 d.传递性:A先于B,B先于C 那么A必然先于C e.线程的start方法先于它的每一个动作 f.线 ...
分类:
其他好文 时间:
2017-05-30 15:59:10
阅读次数:
401
单例模式: 确保一个类仅仅有一个实例,并提供全局訪问点。在Java中实现单例模式须要私有的构造器,一个静态方法和一个静态变量。确定在性能和资源上 的限制,怎样选择适当的方案来实现单例,以解决多线程的问题。假设使用多个类载入器,可能导致单例失效产生多个实例。双重检查加锁不适用于1.4及更早版本号的ja ...
分类:
其他好文 时间:
2017-05-30 15:38:49
阅读次数:
97
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17288243 加锁(synchronized同步)的功能不仅仅局限于互斥行为,同时还存在另外一个重要的方面:内存可见性。我们不仅希望防止某个线程正在使用对象状态而另一个线程在同时修改该状态, ...
分类:
编程语言 时间:
2017-05-30 13:26:29
阅读次数:
138
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17290021 在http://blog.csdn.net/ns_code/article/details/17288243这篇博文中,讲述了通过同步实现内存可见性的方法,在http://bl ...
分类:
编程语言 时间:
2017-05-30 13:10:54
阅读次数:
177
并行集合 对于并行任务,与其相关紧密的就是对一些共享资源,数据结构的并行訪问.常常要做的就是对一些队列进行加锁-解锁,然后运行类似插入,删除等等相互排斥操作. .NET4提供了一些封装好的支持并行操作数据容器,能够降低并行编程的复杂程度. 并行集合的命名空间:System.Collections.C ...
关于Android开发数据存储方式(一) 在厦门做Android开发也有两个月了,快情人节了。我还在弄代码。在微信平台上开发自己的APP,用到了数据存储的知识,如今总结一下: 整体的来讲。数据存储方式有三种:一个是文件,一个是数据库,还有一个则是网络。当中文件和数据库可能用的稍多一些。文件用起来较为 ...
分类:
移动开发 时间:
2017-05-27 21:52:00
阅读次数:
262
多线程同时访问一个资源,可以会产生不可预料的结果,所以为这个资源加锁,访问资源的第一个线程为其加锁后,其他线程便不能在使用那个资源,直到锁被解除。 举个例子: 存款1000元,能取出800的时候我就取800,当我同时用两个线程调用这个取钱操作时,有时可以取出1600元 synchronized: 所 ...
分类:
编程语言 时间:
2017-05-24 21:08:47
阅读次数:
288
分析一下AbstractQueuedSynchronizer的state属性: ReentrantLock对象加锁时的部分调用栈: ReentrantLock/lock() -> NonfairSync/lock() -> AbstractQueuedSynchronizer/acquire() - ...
分类:
其他好文 时间:
2017-05-24 12:35:38
阅读次数:
1813
ReentrankLock 分为 非公平锁及公平锁 首先我们看一下它里面有哪些属性: tryAcquire方法中,先 判断当前state值是否是0,若为0 ,则可进行尝试加锁。若不为0,判断作这个加锁操作的是否为当前线程,若为当前线程,则直接累加,然后更新state值 setExclusiveOwn ...
分类:
其他好文 时间:
2017-05-24 00:53:03
阅读次数:
198
表分区的一个好处:能够避免Deadlock,分区之间是相互独立的,对一个分区加X锁,不会对其他分区产生contention。在项目中,有如下PartitionFunction和PartitionSchemeCREATEPARTITIONFUNCTION[funcPartition_int_DataSourceID](int)
ASRANGELEFTFORVALUES(1,2,3)CREATEPARTITIO..
分类:
其他好文 时间:
2017-05-23 21:48:42
阅读次数:
127