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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

ackage com;

public class ThreadTest {

/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
new Thread(new Tn("1")).run();
new Thread(new Tn("2")).run();
//我希望输出的结果是1 2  但是 实际上输出来的全部是main main
}
}

class Tn extends Thread {
public Tn(String name) {
super(name);
}
public void run() {
System.out.println(Thread.currentThread().getName());
}
}
   currentThread 说是返回当前执行的线程,那么难道这个当前执行线程只能是MAIN 吗? 能不能举个例子让currentThread  返回不同的当前执行线程  最好给出代码 谢谢!

评分

参与人数 1技术分 +1 黑马币 +4 收起 理由
枫儿 + 1 + 4 神马都是浮云

查看全部评分

7 个回复

倒序浏览
FFF 金牌黑马 2013-11-23 14:34:23
沙发
本帖最后由 FFF 于 2013-11-23 16:32 编辑

以下代码可以实现你想要输出1,2的目标。
  1.         public static void main(String[] args) throws InterruptedException {
  2.                 new Thread(new Tn("1")).start() ;
  3.                 new Thread(new Tn("2")).start() ;
  4.                 //我希望输出的结果是1 2  但是 实际上输出来的全部是main main
  5.                 }
  6.                 }

  7.                 class Tn extends Thread {
  8.                         String name;
  9.                 public Tn(String name) {
  10.                 this.name=name;
  11.                 }
  12.                 public void run() {
  13.                 System.out.println(name);
  14.                 }
复制代码
同学,Thread.currentThread().getName()是什么意思你懂了吗?如果不知道、欢迎你重新开贴问{:soso_e120:}
回复 使用道具 举报
  1. public class Test4 {

  2.         /**
  3.          * currentThread 说是返回当前执行的线程,那么难道这个当前执行线程只能是MAIN 吗? 能不能举个例子让currentThread
  4.          * 返回不同的当前执行线程 最好给出代码 谢谢!
  5.          *
  6.          * @param args
  7.          * @throws InterruptedException
  8.          */
  9.         public static void main(String[] args) throws InterruptedException {
  10.                 // 开启一个线程调用start()方法,你直接调用run()方法,这只是线程体,一个方法而已
  11.                 // 程序中依然只有主线程这一个线程,所以只能是main。
  12.                 // 调用start方法来启动一个线程,这时此线程是处于就绪状态, 并没有运行
  13.                 // 然后通过此Thread类调用方法run()来完成其运行操作的。
  14.                 // 至于你想打印显示1,2,你只是将1,2传入构造函数而已,并没有保存,怎么打印?

  15.                 new Thread(new Tn("1")).start();
  16.                 new Thread(new Tn("2")).start();

  17.         }
  18. }

  19. class Tn extends Thread {
  20.         String name;

  21.         public Tn(String name) {
  22.                 this.name = name; // 将传入的参数赋给成员变量
  23.                 // super(name);

  24.         }

  25.         public void run() {
  26.                 // 打印成员变量
  27.                 System.out.println(name);
  28.                 // 返回当前正在执行的线程的名称
  29.                 System.out.println(Thread.currentThread().getName());
  30.         }
  31. }
复制代码

点评

FFF
有例子,有分析。还能指出我的错误。给你个大大的么么~~~  发表于 2013-11-23 16:33

评分

参与人数 1技术分 +2 收起 理由
FFF + 2 赞一个!活动技术分额外+1

查看全部评分

回复 使用道具 举报
{:soso__512989359774006963_3:}
我去,我慢了!
回复 使用道具 举报
FFF 发表于 2013-11-23 14:34
以下代码可以实现你想要输出1,2的目标。同学,Thread.currentThread().getName()是什么意思你懂了吗?如果 ...

我以为我慢了,结果是你水了!哈哈!
new Thread(new Tn("1")).run();你没发现他这句有错吗?
这压根只有主线程。
start() run() 傻傻分不清楚!

点评

FFF
好吧,我也隐隐觉得好像有什么不对的样子~  发表于 2013-11-23 16:31
回复 使用道具 举报
明白明白。。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马