问答详情
源自:2-1 Java 中线程的常用方法介绍

问个简单的问题,在给现成设定了名字时,为什么执行run方法中打印线程的名字都是系统指定的名字,而不是我设定的名字?

提问者:hegang 2014-10-27 17:01

个回答

  • Arthur
    2014-10-27 23:25:35

    正常来说Thread对象的setName方法就应该生效。

  • Arthur
    2014-10-27 22:39:39

    这个需要分析代码了。把你的代码提出来吧。

  • hegang
    2014-10-31 09:30:06

    public class TestThread {

    public static void main(String[] args) {

    ExecutorService service = Executors.newFixedThreadPool(2);

    RunnableTest rt = new RunnableTest();

    Thread t1 = new Thread(rt, "t1");

    Thread t2 = new Thread(new RunnableTest(), "t2");

    service.execute(t1);

    service.execute(t2);

    }

    }

    class RunnableTest implements Runnable {

    public void run() {

    for (int i = 0; i <= 20; i++) {

    // 得到当前线程的名字

    String str = Thread.currentThread().getName();

    System.out.println(str + ":" + i);

    }

    }

    }