锁定老帖子 主题:Java同步锁一个技巧
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-30
Synchronized(this) 和 Synchronized(mutex)
真的有性能差别吗...楼主真的写代码测试过吗? synchronized顶多就是可能与自己的一些同步方法互斥吧,也就是说 synchronized(this)块 和 同步方法之间可以保证线程安全 ,如果多个线程同时调用同步方法和执行 synchronized(this)块会牺牲掉一些性能 。 |
|
返回顶楼 | |
发表时间:2010-01-31
原来:private final Object initLock = new Object();
改成:private final byte[] lock = new byte[0]; practical java 有其说明 |
|
返回顶楼 | |
发表时间:2010-01-31
大家都在谈论同步。我想问一下,如果在程序中真的有两个地方用到同一个对象,但是还没有做同步会发生什么样的情况。例如说connection。
|
|
返回顶楼 | |
发表时间:2010-01-31
flying_all 写道 大家都在谈论同步。我想问一下,如果在程序中真的有两个地方用到同一个对象,但是还没有做同步会发生什么样的情况。例如说connection。
我的理解是,有状态的对象,在多线程应用时,必须注意同步的问题,否则,状态容易混乱。 |
|
返回顶楼 | |
发表时间:2010-02-01
这种双锁机制,早就有了。
|
|
返回顶楼 | |
发表时间:2010-02-01
同步就是保护资源的一致
lz这样写是为了保护那些资源呢 你这么些的话只是保证这个块里的资源不能被写,这样你要却 保这个类的其他方法不能修改或读取 不是百分之百的 |
|
返回顶楼 | |
发表时间:2010-02-01
这里重点不在双锁机制,而是锁的粒度...的确应该如LZ说的,锁的粒度达到了最小化了
|
|
返回顶楼 | |
发表时间:2010-02-01
vlinux 写道 能提供一下如何使用这个Reference呢?我乍看一下不明白使用场合呢
public class MethodProxy { private int i,j; private final Object initLocki = new Object(); private final Object initLockj = new Object(); public void addi() { synchronized (initLocki) { i++; } } public void subi() { synchronized (initLocki) { i--; } } public void addj() { synchronized (initLockj) { j++; } } public void subj() { synchronized (initLockj) { j--; } } } 不知道这么举例理解合不合适,我想应用场合大约是这样 i与j的操作是两个互不相关的操作,若加同一对象锁或this,就会出现i与j操作的互斥,性能会有不必要的损失 仅仅对同一操作addi、subi及addj、subj加同一对象锁,这样既不存在隐患,且能提高性能 |
|
返回顶楼 | |
发表时间:2010-02-01
runshine 写道 vlinux 写道 能提供一下如何使用这个Reference呢?我乍看一下不明白使用场合呢
public class MethodProxy { private int i,j; private final Object initLocki = new Object(); private final Object initLockj = new Object(); public void addi() { synchronized (initLocki) { i++; } } public void subi() { synchronized (initLocki) { i--; } } public void addj() { synchronized (initLockj) { j++; } } public void subj() { synchronized (initLockj) { j--; } } } 不知道这么举例理解合不合适,我想应用场合大约是这样 i与j的操作是两个互不相关的操作,若加同一对象锁或this,就会出现i与j操作的互斥,性能会有不必要的损失 仅仅对同一操作addi、subi及addj、subj加同一对象锁,这样既不存在隐患,且能提高性能 太有才了,通俗易懂的说明了问题,很适合做培训和写技术文章啊,呵呵。 自己的举例能力,真是汗颜,向你学习。 |
|
返回顶楼 | |
发表时间:2010-02-01
hommy8 写道 这里重点不在双锁机制,而是锁的粒度...的确应该如LZ说的,锁的粒度达到了最小化了
还有锁的粒度跟小的你信不信? |
|
返回顶楼 | |