synchronized(this)里的this什么意思?

qq_31134691 2015-10-03 08:18:51
看到了一段代码:
----------------------------------------------------------------------------------------
class Zhangsan {
public void say() {
System.out.println("张三对李四说:你给我画,我就把书给你");
}

public void get() {
System.out.println("张三得到了画");
}
}

class Lisi {
public void say() {
System.out.println("李四对张三说:你给我书,我就把画给你");
}

public void get() {
System.out.println("李四得到了书");
}
}

public class Test2 implements Runnable {
private static Zhangsan zs = new Zhangsan();
private static Lisi ls = new Lisi();
private boolean flag = false;

public void run() {
if (flag) {
synchronized (zs) { //此处的zs或者说synchronized () 括号里的东西表示什么意思?zs换成ls表示什么意思呢
zs.say();

synchronized (ls) {
zs.get();
}
}
} else {
synchronized (ls) {
ls.say();

synchronized (zs) {

ls.get();
}
}
}
}

public static void main(String args[]) {
Test2 t1 = new Test2();
Test2 t2 = new Test2();
t1.flag = true;
t2.flag = false;
Thread thA = new Thread(t1);
Thread thB = new Thread(t2);
thA.start();
thB.start();
}
}
...全文
510 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
scmod 2015-10-03
  • 打赏
  • 举报
回复
就是拿这个东西当个锁啊 如果一个线程已经拿他来当锁进入到synchronized的块里面了 那另外个线程想拿他当锁也进入这个块的时候就被类似于阻塞一样的挡在外面进不去了 知道之前那个线程从这个块里面出来释放了这个实例,下一个线程才能继续拿他当个锁进入这个块 比较肤浅,具体可以网上搜下这个synchronized这个关键字

50,574

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧