java 线程的问题。 用接口实现的方法创建线程为什么可以这样写。

没有风筝的线 2015-12-04 09:45:06
class test
{
public static void main(String[] args)
{
ThreadDemo a = new ThreadDemo();
new Thread(a, "a-------------").start();
new Thread(a, "b-------------").start();
new Thread(a, "c-------------").start();
new Thread(a, "d-------------").start();
}
}

class ThreadDemo implements Runnable
{
private static int x = 100;
public void run()
{
while(true)
{
if(x == 0)
break;
System.out.println(Thread.currentThread().getName()+ "x = "+ x--);
//这里为什么可以写Thread.currentThread().getName()?这个类也没有继承Thread啊,为什么可以用这些方法呢?
}
}
}
...全文
146 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
alan19931103 2015-12-04
  • 打赏
  • 举报
回复
因为是静态方法啊。,。
nomasp 2015-12-04
  • 打赏
  • 举报
回复
引用 4 楼 a1151879477 的回复:
。。发现了。。API上Thread.currentThread()前面有 static 所以才可以这样写。。。
new Thread(a, "a-------------").start();
等于
Thread aa = new Thread(a, "a-------------");
所以Thread.currentThread()返回的是aa 后面的
.getName()
等于
aa.getName()
对的,静态
没有风筝的线 2015-12-04
  • 打赏
  • 举报
回复
。。发现了。。API上Thread.currentThread()前面有 static 所以才可以这样写。。。
new Thread(a, "a-------------").start();
等于
Thread aa = new Thread(a, "a-------------");
所以Thread.currentThread()返回的是aa 后面的
.getName()
等于
aa.getName()
小米拌大头菜 2015-12-04
  • 打赏
  • 举报
回复
任何一个执行过程都是包含在一个线程中的,譬如main方法,执行过程是由一个主线程负责一步一步执行下去。Thread.currentThread()返回的是执行该段代码的线程对象。与ThreadDemo 没有任何关系。与调用这个run()的线程对象有关系,也就是main()里面创建的4个new出来的Thread。
没有风筝的线 2015-12-04
  • 打赏
  • 举报
回复
创建线程不是有两种方式吗? 一种是继承 Thread 复写 run方法 还有一种就是实现 runnable 接口 这里是implements runnable 接口。。这个ThreadDemo类也没有继承 Thread啊 为什么可以用thread中的方法呢?
song5566tao 2015-12-04
  • 打赏
  • 举报
回复
System.out.println(Thread.currentThread().getName()+ "x = "+ x--); 这个里面的 Thread 就是线程类吧,为什么还要继承啊?
姓氏弓长张 2015-12-04
  • 打赏
  • 举报
回复
Thread.currentThread().getName() currentThread() 这个是静态方法哦,不管任何类都可以使用的哦 java运行时所有的实例都在一个线程中哦,你上面已经给线程设置过名字了,这个静态方法就直接把名字获取到了哦,可以看jdk的源码

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧