黑马程序员技术交流社区
标题:
线程问题
[打印本页]
作者:
谢毅
时间:
2013-1-21 19:13
标题:
线程问题
本帖最后由 张向辉 于 2013-1-22 12:58 编辑
System.out.println(Thread.currentThread().getName()+"消费-----"+name);
System.out.println(this.getName()+"消费-----"+name);
两个打印线程名字的方式有什么区别,这里需要注意什么?
作者:
郭嘉
时间:
2013-1-21 19:20
一个是打印此时线程中的线程名,另一个则是打印对象中的getname()方法
作者:
焦健
时间:
2013-1-21 20:01
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new Thread(new Runnable(){
@Override
public void run() {
while(true){
System.out.println(Thread.currentThread().getName()+"---Runnable");
//System.out.println(this==Thread.currentThread());这句话会编译失败
}
}
}).start();
new Thread(){
public void run() {
while(true){
System.out.println(Thread.currentThread().getName()+"--------Thread");
System.out.println((this==Thread.currentThread())+"--------Thread");
}
};
}.start();
while(true){
System.out.println(Thread.currentThread().getName()+"--------Thread");
//System.out.println(this.getName()+"--------main");
//System.out.println(this==Thread.currentThread());这两句话同样会编译失败
}
}
}
从上面可以看出,使用Thread.currentThread().getName()和使用this.getName();都可以得到线程的名称
但是使用this有局限性。使用this调用getName();方法只有在Thread的子类中才行,在Runnable接口中或其他类中
this都不能调用,因为this代表的是所在的类,只能使用Thread.currentThread().getName()获取线程的名称。
如果编译(this==Thread.currentThread())会出现编译时异常。
作者:
李敬卫
时间:
2013-1-21 20:01
多线程中 貌似没有用this.getName()获取多线程名字的方法啊?this.方法名,是为了获取当前对象的方法。多线程中获取线程名称的方法是:Thread.currentThread().getName()
作者:
王少雷
时间:
2013-1-21 20:20
貌似张孝祥还说,我们在开发时 千万别这么用哦~~
作者:
高浩
时间:
2013-1-21 22:17
Thread.currentThread():获取当前执行线程,getName()获取他的名字
this.getName()获取本类对象的名字
作者:
黄锦成
时间:
2013-1-22 11:44
使用Runnable方式实现线程,使用第一种方式
如果通过继承Thread方式实现多线程,两种都可以。第二种方式,this就表示运行中的线程
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2