java[新手]静态方法在哪里调用 ?多线程

Thread类:publicclassThreadYieldextendsThread{publicThreadYield(Stringname){super(name)... Thread类:

public class ThreadYield extends Thread{
public ThreadYield(String name) {

super(name);
}

@Override
public void run() {
for(int i=0; i<100; i++){
System.out.println(getName()+" "+i);
Thread.yield(); //★★为什么静态方法yield在这里调用就可以实现效果?
Thread.sleep(); //★★同上,为什么静态方法sleep在这里调用有效果?
}
}

}

Test类:
public class Test {
public static void main(String[] args) {
ThreadYield ty1 = new ThreadYield("A");
ThreadYield ty2 = new ThreadYield("B");
//Thread.yield(); ★★ 而如果把yield方法写在这里就不行呢? 出不来效果??

//Thread.sleep(); ★★ 同上,sleep方法在这里用就不行呢??
ty1.start();

ty2.start();
}
}

如上,为什么静态方法yield和sleep在测试类调用就完全没效果啊 ?

还有一个问题就是,为什么sleep方法和yield方法不能重写,但是run必须要重写啊?

求大神~~~~~· 谢谢~~~
展开
 我来答
匿名用户
推荐于2016-09-05
展开全部
yield和sleep可以在run中调用主要是因为类ThreadYield继承了thread,在子类方法里面调用父类方法很正常。run要重写是因为本身thread里面的run就是空的,就是设计出来让你重写的,另两个本身以及实现好了,调用就行了
更多追问追答
追问
后面那个看懂了。
前面的,再问一下,之所以不在测试类调用,是不是也可以说,测试类调用的Thread的sleep方法不是针对我创建的对象而言的 ?所以必须要在子类里面调用 ?
追答
sleep方法属于Thread类中方法,你用run开启这个线程之后你的线程才能睡觉呀
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式