A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

毕老师在讲线程的时候,创建线程的第一种方式是继承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--);
   }
  }
}
}

评分

参与人数 1黑马币 +12 收起 理由
Rancho_Gump + 12 给点金币鼓励下 嘿嘿

查看全部评分

1 个回复

倒序浏览
本帖最后由 张向辉 于 2013-2-21 22:56 编辑

哈哈 想法很有意思  不过Thread实现Runnable接口后,定义了自己特有的成员变量,所以继承Thread类后的对象相对于直接实现Runnable后的对象臃肿的多,造成内存不必要的浪费
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马