黑马程序员技术交流社区

标题: 关于多线程中this的问题 [打印本页]

作者: 蓝蓝的天    时间: 2015-4-22 15:14
标题: 关于多线程中this的问题
  1. /*

  2. Sychronized:同步代码块,解决


  3. 问题是:这里为什么用到this会报错呢???

  4. */
  5. class Ticket implements Runnable
  6. {
  7.   private static int ticket = 20;
  8.   Object obj = new Object();
  9.   public void run()
  10.   {
  11.           while(true)
  12. {
  13.           synchronized(obj)
  14.           {
  15.                   if(ticket>0)
  16.                   {
  17.                          
  18.                            System.out.println(this.getName()+"正在卖"+ticket-- +"号票");       
  19.                          
  20.                   }       
  21.     }        
  22.   }       
  23.        
  24. }       
  25.        
  26. }
  27. class SynchronizedTest
  28. {
  29.   public static void main(String[] args)
  30.   {
  31.     Ticket t = new Ticket();     //创建线程对象
  32.     Thread t0 = new Thread(t);    //创建线程
  33.      Thread t1 = new Thread(t);    //创建线程
  34.       Thread t2 = new Thread(t);     //创建线程
  35.        Thread t3 = new Thread(t);            //创建线程
  36.          
  37.           t0.start();
  38.             t1.start();
  39.              t2.start();
  40.               t3.start();
  41.   }       
  42.        
  43.        
  44.        
  45.        
  46. }
  47. /*

  48. G:\代码>javac SynchronizedTest.java
  49. SynchronizedTest.java:22: 错误: 找不到符号
  50.                          System.out.println(this.getName()+"正在卖"+ticket-- +"
  51. 号票");
  52.                                                 ^
  53.   符号: 方法 getName()
  54. 1 个错误




  55. */
复制代码

作者: 蓝蓝的天    时间: 2015-4-22 15:15
为什么这里用到this会报错呢??
作者: 李成强    时间: 2015-4-22 15:26
你都没有声明getName()方法,也就是说你的Ticket类没有getName()方法,所以当然会报错了。
作者: lurenge    时间: 2015-4-22 15:26
你的this 时指的那个?




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