正常来说,一个线程start后的默认名字是Thread
,
`t.start();
t.setName();`
这时可以修改线程名,而且可以多次setName,看了源代码也没懂为什么,求高手指导
你好,给线程设置合适的名字可以在dump线程栈时很容易识别出你关心的线程和它的状态。
默认线程名称没有任何业务/操作含义,不利于问题诊断。可以参考一下:
http://blog.takipi.com/java-thread-magic-tricks/
只有继承了Thread类的线程才会有setName,start这些方法, http://jingyan.baidu.com/article/ab69b270a1f72c2ca7189fe9.html
创建线程的两种方式:
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());
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。