黑马程序员技术交流社区

标题: 同步函数this锁到底是指的什么 [打印本页]

作者: 会飞De石头    时间: 2015-11-3 00:09
标题: 同步函数this锁到底是指的什么
有如下代码,一个测试类 ,一个实现了Thread类的线程类
//这是线程类
  1. public class Lock extends Thread {
  2.         private int num = 50;

  3.         @Override
  4.         public void run() {
  5.                 while (true) {
  6.                         if (num > 0) {
  7.                                 method();
  8.                         }
  9.                 }
  10.         }

  11.         public synchronized void method() {
  12.                 System.out.println(Thread.currentThread().getName() + "正在显示:" + num--);
  13.         }
  14. }
复制代码


//这是测试类
  1. public class Test {
  2.         public static void main(String[] args) {
  3.                 // 创建线程
  4.                 Lock l_A = new Lock();
  5.                 Lock l_B = new Lock();

  6.                 l_A.setName("小明");
  7.                 l_B.setName("小强");

  8.                 l_A.start();
  9.                 l_B.start();
  10.         }
  11. }
复制代码
问题是:
1、同步函数的锁到底是什么?
2、如果是this。如果证明测试类中 两个线程 使用的是同一个this?
3、如果是同一个this,这个this又是谁?



作者: 会飞De石头    时间: 2015-11-3 00:10
自己顶顶顶。。快来大鸟呀
作者: 会飞De石头    时间: 2015-11-3 00:12
再顶顶。块来大神呀,help !!!
作者: 大自然的搬运工    时间: 2015-11-3 02:13
新人来说说:
我看楼主这代码应该是不同步的吧 ,,this指当前对象,你这创建了两个对象线程,对象里的数据没有共享,两个对象各自执行自己的数据,所以涉及不到同步,添加同步感觉多余了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2