黑马程序员技术交流社区

标题: Thread子类的特殊用法------求版主给技术分(这可是自己想... [打印本页]

作者: 胥文    时间: 2013-2-21 22:30
标题: Thread子类的特殊用法------求版主给技术分(这可是自己想...
毕老师在讲线程的时候,创建线程的第一种方式是继承Thread,然后用子类对象调用start()方法,但是多线程的时候就出现问题
然后就讲了实现Runnable创建线程的第二种方式。
今天看API的时候突然发现Thread类是实现了Runnable的接口的,那么我们在继承Thread类的时候是不是就相当于也实现了Runnable,
就可以像实现了Runnable接口的类一样用喽
上代码:
public class Test3 {

public static void main(String[] args) {
  // TODO Auto-generated method stub
  Ticket t = new Ticket();
  Thread th1 = new Thread(t);
  Thread th2 = new Thread(t);
  Thread th3 = new Thread(t);
  th1.start();
  th2.start();
  th3.start();
}
}
class Ticket extends Thread
{
int ticket = 100;
Object obj = new Object();
public void run()
{
  while(ticket>0)
  {
   synchronized(obj)
   {
    if(ticket>0)
     System.out.println(Thread.currentThread().getName()+"---"+ticket--);
   }
  }
}
}

作者: Rancho_Gump    时间: 2013-2-21 22:54
本帖最后由 张向辉 于 2013-2-21 22:56 编辑

哈哈 想法很有意思  不过Thread实现Runnable接口后,定义了自己特有的成员变量,所以继承Thread类后的对象相对于直接实现Runnable后的对象臃肿的多,造成内存不必要的浪费




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