黑马程序员技术交流社区

标题: 线程问题 [打印本页]

作者: 莫运飞    时间: 2012-4-6 10:09
标题: 线程问题
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();
}



}











作者: 翟友伟    时间: 2012-4-6 12:27
创建线程方法2    实现runnable
1.定义类实现Runnable
2.覆盖Runnable中RUN方法。
3,通过 Thread类建立对象 ,将Runnable子类对象 作为参数传给 Thread构造函数  

继承Thread:线程代码存放在Thread子类的run方法
现实Runnable:线程代码存放在接口的子类run方法中
作者: 孙国军    时间: 2012-4-6 12:56
Runnable是一个接口
currentThread()是一个static方法,只存在于Thread类或者其子类中,想要调用它,只能是以上所说过类去调用

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


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





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