首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java同步块解决思路

2012-03-29 
java同步块之前以为对于一个同步方法,一个时刻只有一个线程能够访问,这没问题。问题是能别的线程能够访问此

java同步块
之前以为对于一个同步方法,一个时刻只有一个线程能够访问,这没问题。问题是能别的线程能够访问此对象的其他同步方法吗?同步方法的锁是该类的对象,同步块的锁是括号里的对象。照这样说如果sync_block1和sync_block2的锁都是obj,那么一个线程访问sync_block1的时候,别的线程不能访问sync_block2吧。

[解决办法]
同步方法的话,只要是一个对象的所有同步方法,都相当于是synchronized(this),所以都互斥。

同理,只要同步块确定锁得是同一个对象,就也是互斥的。


但是在同步块中,你可以通过wait来让权,这个略微比较复杂,具体需要去Google相关细节了。
[解决办法]

Java code
class Test{    public static synchronized void mm(){}    public static synchronized void kk(){}    public synchronized void gg(){}    public void jj(){        synchronized (this) {                    }    }    public void dd(){        synchronized (this.getClass()) {                    }    }} 

热点排行