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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

bulebone

初级黑马

  • 黑马币:30

  • 帖子:7

  • 精华:0

© bulebone 初级黑马   /  2015-6-9 16:01  /  632 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

currentThread这个方法是静态,那它就是在对象没创建之前,把类加载入内存时,就已经存在,想问一问这样,它怎么能返回对象呢?

11 个回复

倒序浏览
单核CPU一个时间只能运行一个线程,只要返回那个时刻的,即使时间非常小,也会返回运行中的本类线程对象啊
回复 使用道具 举报
mishisanyi 发表于 2015-6-9 20:20
单核CPU一个时间只能运行一个线程,只要返回那个时刻的,即使时间非常小,也会返回运行中的本类线程对象啊 ...

如果在主函数第一行就用类名调用它呢?

点评

那它返回值是什么?  发表于 2015-6-10 13:38
主函数本身也是一个线程啊  发表于 2015-6-10 11:20
回复 使用道具 举报
  1. package exam;

  2. public class Demo{

  3.         public static void main(String[] args){
  4.          System.out.println("ThreadName:"+Thread.currentThread().getName());
  5.         }
  6. }
复制代码

执行结果:ThreadName:main

这下懂了吗

回复 使用道具 举报
本帖最后由 bulebone 于 2015-6-11 09:50 编辑
mishisanyi 发表于 2015-6-10 16:45
执行结果:ThreadName:main

这下懂了吗

执行结果为什么不是jvm?
我这种想法到底错在哪——虚拟机调用主函数,就相当于new Thread().run(),所以在主函数中Thread.currentThread(),应该返回虚拟机(线程对象)!
回复 使用道具 举报
bulebone 发表于 2015-6-10 20:56
执行结果为什么不是jvm?
我这种想法到底错在哪——虚拟机调用主函数,就相当于new Thread().run(),所以 ...

线程和进程是两个概念,这个函数是返回线程的,你让他返回进程,这不是可笑吗
回复 使用道具 举报
mishisanyi 发表于 2015-6-11 17:38
线程和进程是两个概念,这个函数是返回线程的,你让他返回进程,这不是可笑吗 ...

线程要执行的代码存放在run(),虚拟机要执行的代码存放在main()。难道不能做这样类比理解:main()相当于run(),虚拟机相当于线程?
看了你的解答,我想问一问,那相当于run()的那个是什么呢?
回复 使用道具 举报
是方法,又不是数据
回复 使用道具 举报
bulebone 发表于 2015-6-11 22:55
线程要执行的代码存放在run(),虚拟机要执行的代码存放在main()。难道不能做这样类比理解:main()相当于r ...

让我来给你举个例,中国有多个县城,有一个县城叫进程县,它的中心城叫主线程镇,还有第一线程镇,第二线程镇。我和你现在在城区里,然后我问你:我们在哪个镇,你回答我:我们在进程县。你觉得对吗?如果按照你的说法,返回的进程名,那么所有的线程里都应该返回进程名。
回复 使用道具 举报
mishisanyi 发表于 2015-6-12 00:01
让我来给你举个例,中国有多个县城,有一个县城叫进程县,它的中心城叫主线程镇,还有第一线程镇,第二线 ...

自己推导顺序是这样:main()是存放虚拟机要执行的代码,那是不是可以把main()看做run(),看做类似Thread类里的一个像run()一样的方法,而不应该是线程。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马