黑马程序员技术交流社区

标题: 关于Thread.currentThread()一个非常困惑的问题 [打印本页]

作者: che201311    时间: 2013-11-23 12:06
标题: 关于Thread.currentThread()一个非常困惑的问题
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  返回不同的当前执行线程  最好给出代码 谢谢!
作者: FFF    时间: 2013-11-23 14:34
本帖最后由 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:}
作者: 低调的奢华    时间: 2013-11-23 14:36
  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. }
复制代码

作者: 低调的奢华    时间: 2013-11-23 14:38
{:soso__512989359774006963_3:}
我去,我慢了!
作者: 低调的奢华    时间: 2013-11-23 14:46
FFF 发表于 2013-11-23 14:34
以下代码可以实现你想要输出1,2的目标。同学,Thread.currentThread().getName()是什么意思你懂了吗?如果 ...

我以为我慢了,结果是你水了!哈哈!
new Thread(new Tn("1")).run();你没发现他这句有错吗?
这压根只有主线程。
start() run() 傻傻分不清楚!
作者: che201311    时间: 2013-11-23 16:00
明白明白。。。。。。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2