A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 郭冰川 于 2013-1-23 21:01 编辑

多线程中Thread.currentThread().getName() 和 this.getName() 是完全一样的吗?
看到毕老师有时候写Thread.current()而不写this,希望高手给举个例子说明一下.

评分

参与人数 1技术分 +1 收起 理由
金鑫 + 1

查看全部评分

10 个回复

正序浏览
哦,明白了。不能直接用类名直接调用非静态方法
回复 使用道具 举报
东爱 初级黑马 2013-4-27 17:19:55
9#
各位好,为啥不能直接用Thread.getName(); ?
这样会报错:
Cannot make a static reference to the non-static method getName() from the type Thread
回复 使用道具 举报
正解正解。。。。
回复 使用道具 举报
使用Thread.currentThread().getName()和使用this.getName(),都可以得到线程的名称,但是使用this调用getName()方法只能在本类中,而不能在其他类中,更不能在Runnable接口中,所以只能使用Thread.currentThread().getName()获取线程的名称,否则会出现编译时异常。
回复 使用道具 举报
冯佩 发表于 2013-1-23 19:51
你说的Thread.current().getName()应该是Thread.currentThread().getName()吧,currentThread()方法返回的 ...

嗯 是Thread.currentThread() , 写错了   多谢回答
回复 使用道具 举报
黄锦成 发表于 2013-1-23 20:56
Thread.currentThread().getName()在两种实现线程的方式中都可以用

this.getName()只能在继承方式中使用。 ...

明白了 谢了
回复 使用道具 举报
Thread.currentThread().getName()在两种实现线程的方式中都可以用

this.getName()只能在继承方式中使用。因为在Thread子类中用this,this代表的是线程对象。

如果你在Runnable实现类中用this.getName(),那么编译错误,因为在Runnable中,不存在getName方法

评分

参与人数 1黑马币 +9 收起 理由
金鑫 + 9

查看全部评分

回复 使用道具 举报
你说的Thread.current().getName()应该是Thread.currentThread().getName()吧,currentThread()方法返回的是对当前正在执行的线程对象的引用,this代表的是当前调用它所在函数所属的对象的引用,很明显在这里调用this所在函数的对象正是当前在执行的线程对象,所以在此处二者是完全一样的,可用代码Thread.currentThread()==this在程序中验证即可

评分

参与人数 1技术分 +1 收起 理由
金鑫 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马