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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 莫运飞 中级黑马   /  2012-4-6 10:09  /  1632 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Ticket implements Runnable
{
        private int ticket=30;

        public  void  run()
{
                while(true)

{
                if(ticket>0)

{
                System.out.println(Thread.currentThread().getName()+"......"+ticket--);
                                //这里的Thread。为什么类继承Thread时,这里可以用Thread;但当类实现的是Runnable类的时候,这里可以用Thread,但不可以Runnable?????}                       


}}}

class Demo
{
        public static void main(String[] args)


{
                Ticket t=new Ticket();
               
                Thread t1=new Thread(t);
                Thread t2=new Thread(t);
                Thread t3=new Thread(t);


                t1.start();
                t2.start();
                t3.start();
}



}










4 个回复

倒序浏览
创建线程方法2    实现runnable
1.定义类实现Runnable
2.覆盖Runnable中RUN方法。
3,通过 Thread类建立对象 ,将Runnable子类对象 作为参数传给 Thread构造函数  

继承Thread:线程代码存放在Thread子类的run方法
现实Runnable:线程代码存放在接口的子类run方法中
回复 使用道具 举报
孙国军 来自手机 中级黑马 2012-4-6 12:56:30
藤椅
Runnable是一个接口
currentThread()是一个static方法,只存在于Thread类或者其子类中,想要调用它,只能是以上所说过类去调用

因为Thread体系中有Thread(Runnable r)的构造方法,所以要把Runnable()接口子类的run()方法和Thread关联,需要使用
上面所说的调用方法


我可是用pad回答的问题,管理员大大要给技术分啊!!!!
回复 使用道具 举报
ipad没有压力哦~
你得弄清楚之间的关系,其实Thread类中定义了Runnable接口。
而上面用到的currentThread()是一个静态方法,只存在于Thread类或者其子类中,如果要调用到该方法,只能是本类去调用。
Runnable借口呢,其实说白了。覆盖就成。通过Thread创建对象。然后用run跑。
这是复制2楼的,没得说,很简单的理解理论就成。
继承Thread:线程代码存放在Thread子类的run方法
现实Runnable:线程代码存放在接口的子类run方法中
回复 使用道具 举报
创建线程方法1 继承Thread,覆写RUN方法。
创建线程方法2    实现runnable.定义类实现Runnable.覆写Runnable中RUN方法。
因为Thread体系中有Thread(Runnable r)的构造方法,所以要把Runnable()接口子类的run()方法和Thread关联
继承Thread:线程代码存放在Thread子类的run方法
现实Runnable:线程代码存放在接口的子类run方法中
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马