标题: 同步锁问题 [打印本页] 作者: 周洋 时间: 2012-4-3 17:31 标题: 同步锁问题 假设我现在写一个类,里面有两个方法,我要调用几个线程来执行他,但是我需要一个同步锁,如果方法a是静态方法,b是普通方法,用synchronized锁住这两个线程,是不是锁住a的时候b依然会被调用?这样是不是还是不安全?作者: 刘旭 时间: 2012-4-3 17:53
这样肯定是不行的。如下例:
public class Test {
public static void main(String[] a) {
new Thread(new Runnable() {
@Override
public void run() {
R.a();
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
new R().b();
}
}).start();
}
}
class R {
static synchronized void a() {
System.out.println("f1 1");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("f1 2");
}