在C程序代码中我们可以利用操作系统提供的互斥锁来实现同步块的互斥访问及线程的阻塞及唤醒等工作。然而在Java中除了提供Lock API外还在语法层面上提供了synchronized关键字来实现互斥同步原语。那么到底在JVM内部是怎么实现synchronized关键子的呢?一、synchroniz.....
分类:
其他好文 时间:
2014-08-05 10:47:19
阅读次数:
386
读写锁的概念很简单,允许多个线程同时获取读锁,但同一时间只允许一个线程获得写锁,因此也称作共享-独占锁。在C#中,推荐使用ReaderWriterLockSlim类来完成读写锁的功能。某些场合下,对一个对象的读取次数远远大于修改次数,如果只是简单的用lock方式加锁,则会影响读取的效..
分类:
其他好文 时间:
2014-08-05 03:14:39
阅读次数:
271
1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟悉。这个多线程问题比较简单,可以用join方法实现。2)在Java中Lock接口比synchronized块的优势是什么?...
分类:
编程语言 时间:
2014-08-04 13:57:07
阅读次数:
227
1、使用svn很长时间,但是一直使用都没有去梳理过svn是什么,怎么样使用,只会简单的svn 添加文件,删除文件,co,ci,up现在简单的整理一下使用svn的模式有两种1、Lock-Modify-Unlock加锁-修改-解锁 别人在修改这种方式很显然不适合团队协作2、Copy-Modify-Mer...
分类:
其他好文 时间:
2014-08-03 17:56:55
阅读次数:
232
题目链接:uva 11024 - Circular Lock
题目大意;有个2*2的矩阵,给定p,s,P为p数组中所有元素的最大公约数。s为2*2矩阵的初始状态,每次可以选择一行或是一列同时加1,最终使得sij%P=0
解题思路:gij为aij还需要多少可以是P的倍数,判断g11?g12?g21+g22是P的倍数即可。
/********************
* A + C =...
分类:
其他好文 时间:
2014-08-03 15:24:25
阅读次数:
219
synchroized代码块, 直接使用String作为lock的时候,不会起作用此时可已使用String.intern()作为代替,但String.intern()的缺陷是 如果字符串特别多,导致放入字符串池的String不可控,有可能导致OOM错误或者过多的Full GC具体参考这里http:/...
分类:
其他好文 时间:
2014-08-01 19:15:22
阅读次数:
1438
在编码的过程中,有时候我们不得不借助锁同步来保证线程安全。synchronized关键字在上一篇博客中已经介绍;自从JDK5开始,添加了另一种锁机制:ReentrantLock。
二者的区别
1、lock是jdk5之后代码层面实现的,synchronized是JVM层面实现的。
2、synchronized在出现异常的时候能够自动释放锁,而lock必须在finally块中unlock()主动...
分类:
编程语言 时间:
2014-08-01 00:02:20
阅读次数:
319
JDK提供了写锁接口ReadWriteLock和它的实现ReentrantReadWriteLock。要实现一个读写锁,需要考虑很多细节,其中之一就是锁升级和锁降级的问题。什么是升级和降级呢?ReadWriteLock的javadoc有一段话:
Can the write lock be downgraded to a read lock without allowing an interven...
分类:
其他好文 时间:
2014-07-31 17:13:36
阅读次数:
231
在多线程程序运行过程中,可能会涉及到两个或者多个线程试图同时访问同一个资源。为了防止这种情况的发生,必须在线程使用共享资源时给资源“上锁”,以阻挡其它线程的访问。而这种机制也常常被称为互斥量,本文主要介绍它的两种方式synchronized和Lock 。
1、synchronized
当任务要执行被synchronized关键字保护的代码片段的时候,它会检查锁是否可用,然后获取锁,执行代码,释...
分类:
编程语言 时间:
2014-07-31 17:11:30
阅读次数:
235
一、背景 我们知道,为了防止并发而出现脏读脏写的情况,可以使用Lock语句关键字,这属于悲观并发控制的一种技术,,但在分布式站点下,锁的作用几乎不存在,因为虽然锁住了A服务器的实例对象,但B服务器上的锁是不知道的A服务器上锁的情况的,所以,面对分布式站点、单一数据库这种架构,我们可以使用Entit....
分类:
其他好文 时间:
2014-07-31 16:08:36
阅读次数:
288