当前位置: 代码迷 >> J2SE >> java同步块解决思路
  详细解决方案

java同步块解决思路

热度:150   发布时间:2016-04-24 01:42:46.0
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()) {                    }    }}
  相关解决方案