黑马程序员技术交流社区

标题: 关于线程的问题 区别是什么呢? [打印本页]

作者: 姚志远    时间: 2013-6-15 18:15
标题: 关于线程的问题 区别是什么呢?
public class UnsafeThread implements Runnable {
private int tickets=50;
Object obj=new Object();
public void run() {
    while(true)
    {
    synchronized(obj){ //这个地方this与obj 有何区别。
       if(tickets>0){
        try {
       Thread.sleep(100);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
      System.out.println(Thread.currentThread().getName()+":"+tickets--);  
      }
    }
    }
}
public static void main(String[] args) {
  UnsafeThread unSafe=new UnsafeThread();
     Thread thread1=new Thread(unSafe);
     Thread thread2=new Thread(unSafe);
     thread1.start();
     thread2.start();
}
}
作者: 尹丽峰    时间: 2013-6-15 18:24
你这里用的是同步代码块,所以后面的锁必须是一个任意对象作为锁,this一般是同步函数上用this
作者: 姚志远    时间: 2013-6-15 18:54
尹丽峰 发表于 2013-6-15 18:24
你这里用的是同步代码块,所以后面的锁必须是一个任意对象作为锁,this一般是同步函数上用this ...

嗯  一语惊醒梦中人 3 k s
作者: slatop@qq.com    时间: 2013-6-16 01:55
这里的this和obj没区别,this == obj 为true
作者: 姚志远    时间: 2013-6-16 19:30
标题: RE: 关于线程的问题 区别是什么呢?
slatop@qq.com 发表于 2013-6-16 01:55
这里的this和obj没区别,this == obj 为true

谢谢了   谢谢你的指点
作者: 孙百鑫    时间: 2013-6-22 01:36
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~




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