public class Thread1 implements Runnable {
public void run() {
synchronized(this) { //这里的this应该是指当前对象吧
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + " synchronized loop " + i);
}
}
}
public static void main(String[] args) {
Thread1 t1 = new Thread1();
Thread ta = new Thread(t1, "A");
Thread tb = new Thread(t1, "B");
ta.start();
tb.start();
}
}
那在ta和tb启动后运行run时,synchronized(this)里的this应该分别指的是ta和tb对吧,明明是2个不同对象为什么会有一个线程被阻塞呢?
synchronized(this)
答案:2 悬赏:70 手机版
解决时间 2021-01-03 15:18
- 提问者网友:放下
- 2021-01-02 19:01
最佳答案
- 五星知识达人网友:鱼芗
- 2021-01-02 19:29
synchronized(this)里的this 是指当前class的实例
这个当前class是 Thread1,所以Thread1的实例在main方法里是
Thread1 t1 = new Thread1();
也就是t1,所以当ta和tb运行起来的时候,锁了同一个对象t1,自然就会引发阻塞
这个当前class是 Thread1,所以Thread1的实例在main方法里是
Thread1 t1 = new Thread1();
也就是t1,所以当ta和tb运行起来的时候,锁了同一个对象t1,自然就会引发阻塞
全部回答
- 1楼网友:酒醒三更
- 2021-01-02 20:30
括号里面放哪个对象,就锁那个对象。。。。。。注意作用域范围
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯