java同步块 之前以为对于一个同步方法,一个时刻只有一个线程能够访问,这没问题。问题是能别的线程能够访问此对象的其他同步方法吗?同步方法的锁是该类的对象,同步块的锁是括号里的对象。照这样说如果sync_block1和sync_block2的锁都是obj,那么一个线程访问sync_block1的时候,别的线程不能访问sync_block2吧。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 同步方法的话,只要是一个对象的所有同步方法,都相当于是synchronized(this),所以都互斥。同理,只要同步块确定锁得是同一个对象,就也是互斥的。但是在同步块中,你可以通过wait来让权,这个略微比较复杂,具体需要去Google相关细节了。 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()) { } }}貌似jdk5还有lock那种锁 怎么用记不清楚了 可以访问的,加锁是在访问时,比如A、B同时访问sync_block1 那肯定只有一个线程能进去,但是C、D访问的是sync_block2 那如果C进去了D就进不去了 synchronized(this)中this是指同一个 但是同步的意思是每个方法一个锁,并不是每个类一个锁,要是每个类一个锁的话就是你说的那种了。 你搞错了吧,我看了java并发编程实践,里面说this是指当前对象(和习惯一样)。就算不是,如果synchronized(mobj),mobj是一个属性,这样的话两者情况就不同了。 画板填充算法? 怎么使返回的List不会被被别人修改 java关于16进制的问题 构造函数的继承问题 多个JTextField批量更新数据库问题 小弟想学JAVA,请达人推荐几本JAVA的书籍 小弟有一个困惑很久的问题,那问大哥愿指点迷津!! 弱弱地问一个,core java java高手进来看看了 请教applet问题! applet问题 java中对象输入输出流中克隆的实现过程
但是在同步块中,你可以通过wait来让权,这个略微比较复杂,具体需要去Google相关细节了。
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()) {
}
}
}貌似jdk5还有lock那种锁 怎么用记不清楚了