开发者社区> 问答> 正文

请教java多线程问题

正常来说,一个线程start后的默认名字是Thread,
`t.start();
t.setName();`
这时可以修改线程名,而且可以多次setName,看了源代码也没懂为什么,求高手指导

展开
收起
蛮大人123 2016-06-14 14:59:07 2441 0
3 条回答
写回答
取消 提交回答
  • 你好,给线程设置合适的名字可以在dump线程栈时很容易识别出你关心的线程和它的状态。
    默认线程名称没有任何业务/操作含义,不利于问题诊断。可以参考一下:
    http://blog.takipi.com/java-thread-magic-tricks/

    2019-07-17 19:37:45
    赞同 展开评论 打赏
  • 只有继承了Thread类的线程才会有setName,start这些方法, http://jingyan.baidu.com/article/ab69b270a1f72c2ca7189fe9.html

    2019-07-17 19:37:45
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪

    创建线程的两种方式:

    class A extends Thread //方法一:继承Thread类
    { 
    public void run()
    {
        System.out.printf("%s在执行!\n", Thread.currentThread().getName());
    
        System.out.println("嘿嘿嘿嘿");
    }   
    }
    class B implements Runnable //方法二:实现接口Runnable
    {
    public void run()
    {
    Thread Th = Thread.currentThread();//Thread.currentThread()返回当前线程的引用
    System.out.printf("%s在执行!\n", Th.getName());
    System.out.println("一一一一");
    
                    }
    }
    class TestThread
    {
    public static void main(String[] args)
    {
    A aa = new A();
    aa.setName("线程A");
    aa.start();
    //aa.start();//多次启动一个线程是非法的。
    //特别是当线程已经结束执行后,不能再重新启动。
    B bb = new B();
    bb.run(); //可以用对象直接调用run()开启线程
    Thread Tb = new Thread (bb);
    Tb.setName("线程B"); //也可以用Thread中的start()方法启动线程
    Tb.start();
    System.out.printf("%s在执行!\n", Thread.currentThread().getName());
    
    }
    }
    2019-07-17 19:37:45
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载