黑马程序员技术交流社区

标题: 关于多线程的Thread.sleep()调用问题? [打印本页]

作者: 任雷彬    时间: 2012-11-4 10:28
标题: 关于多线程的Thread.sleep()调用问题?
在子类继承父类过程中,子类会继承父类的属性和方法,在API中sleep方法是Thread类中定义为static静态的方法。
但是在子类继承后,子类是否可以调用sleep()方法。
还有在下面代码中没有Thread类,为什么可以再Tick类中用Thread调用Thread.sleep(10);方法?

class Tick implements Runnable
{
   private int ticket =50;
  public void run()
{
    while(true)
{
if(tick>0)
{
try{Thread.sleep(10);}catch(Exception e){}
//此try...catch...语句中,Thread类在调用sleep()方法,但是在子类继承父类时候,子类会拥有父类的功能,
//所以是否可以用子类调用sleep()方法。
System.out.println(Thread.currentThread().getName()+"..."+tick--);
}
}
}
}
class TickDemo
{
   Tick t = new Tick();
   Thread t1= new Thread(t);
   Thread t2 = new Thread(t);
   t1.start();
   t2.start();
}
作者: 葛旭东    时间: 2012-11-4 11:00
可以,只要这个类继承了Thread类,那么它也拥有了sleep静态方法,可以自己调用sleep方法。
作者: 焦晨光    时间: 2012-11-4 11:11
在子类继承父类过程中,子类会继承父类的属性和方法,在API中sleep方法是Thread类中定义为static静态的方法。
但是在子类继承后,子类是否可以调用sleep()方法。
必须可以,这是继承的特性!~

还有在下面代码中没有Thread类,为什么可以再Tick类中用Thread调用Thread.sleep(10);方法?

下面的代码没有Thread类???
Thread t1= new Thread(t);
Thread t2 = new Thread(t);
这两段代码是不是新建了Thread对象 t1,t2
t1和t2在执行Tick类中的run方法时调用自身的sleep()方法,符合原理啊!

tick类实现了了runnable接口,具备了多线程的特性,实现了runnable接口的类,要想使用多线程
还必须要创建Thread对象类完成,只是用了不同的构造方法来创建Thread类
继承Thread类和实现runnable接口来实现多线程都要创建Thread来完成
只是Thread的构造方法不同而已
附:
构造方法摘要
Thread()
          分配新的 Thread 对象。
Thread(Runnable target)
          分配新的 Thread 对象。

作者: 朱宏青    时间: 2012-11-4 13:12
楼上说的很不错了;

这里补充一下:继承父类的子类是可以调用父类的所有属性跟方法(private 和final的除外 除非重写 不然是调用不到的,官方有声明,继承只能继承"看的到"的属性跟方法).


作者: 刘士林    时间: 2012-11-4 15:02
你迷惑的是Thread类并没有在你的代码中定义出来,为什么却可以用它?这是因为Thread类是被自动导入的,它是java.lang 包中的类,java.lang包中的类在被被调用时会被自动导入,而不用显示的手动导入。
继承了Thread之后可以使用它的方法和属性,在权限足够大的情况下。
作者: 任雷彬    时间: 2012-11-4 20:47
刘士林 发表于 2012-11-4 15:02
你迷惑的是Thread类并没有在你的代码中定义出来,为什么却可以用它?这是因为Thread类是被自动导入的,它是 ...

java.lang包中的类是被自动导入的,那其他类那?
作者: 刘士林    时间: 2012-11-4 21:11
任雷彬 发表于 2012-11-4 20:47
java.lang包中的类是被自动导入的,那其他类那?

据我所知,java虚拟机只默认导入java.lang包,其它包要自己手动导入。
作者: 陈军    时间: 2012-11-5 11:00
既然是静态方法。所属于类Thread本身。跟其他没有关系。任何类都可以调用。所以子类必须可以





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