黑马程序员技术交流社区
标题:
关于多线程获取线程名字的问题
[打印本页]
作者:
小痞痞
时间:
2013-10-6 19:36
标题:
关于多线程获取线程名字的问题
本帖最后由 小痞痞 于 2013-10-7 21:13 编辑
class MyThread extends Thread {
public void run() {
for(int x = 0;x < 10; x++){
System.out.println(getName() + "Aaaaaaa");
}
}
}
复制代码
在继承Thread方法中直接用getName就可以获取到线程的名字
class MyThread1 implements Runnable {
public void run() {
for(int x = 0;x < 10; x++){
System.out.println(Thread.currentThread().getName() + "Bbbbbbbbbbb");
}
}
}
复制代码
为啥在使用Runnable接口的时候却要使用Thread.currentThread().getName()来获取线程的名字呢?
作者:
╋☆Love↘七
时间:
2013-10-7 10:03
首先是继承Thread类,既然是继承那么可以直接使用Thread类中的方法。
而实现Runnable借口是无法直接使用Thread类中的方法的 ,必须获得线程对象后才能调用
不知道这样说你可能明白
作者:
放飞自己365
时间:
2013-10-7 13:21
第一个实现多线程的方法是定义一个类继承Thread的类,子类就可以使用父类的方法,那么getName()方法是Thread类的非静态方法,那么可以直接使用,默认的是当前对象的调用this;而在第二中实现多线程的方法是实现Runnable接口,在Runnable接口中只有一个方法run方法,而没有getName()方法,所以不能直接调用getName()方法,想使用要么自己写这个方法然后调用要么使用Java为我们提供的方法,在Java中的Thread类中有这个方法,不过这个方法是非静态的方法,不能直接调用,而在Thread类中currentThread()方法是静态的,它可以直接使用类名调用,这个方法返回值是本类对象Thread, 返回对当前正在执行的线程对象的引用,所以它可以接着调用本类中的方法getName()方法。
作者:
小痞痞
时间:
2013-10-7 21:11
放飞自己365 发表于 2013-10-7 13:21
第一个实现多线程的方法是定义一个类继承Thread的类,子类就可以使用父类的方法,那么getName()方法是Threa ...
谢谢 现在明白了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2