java怎么设置线程名字

publicclassServer{inti=0;while(true){i++;Threadt=newThread(newMyExecute());t.currentT... public class Server {
int i=0;
while (true) {
i++;
Thread t = new Thread(new MyExecute());
t.currentThread().setName("name"+i);
t.start();
}

class MyExecute implements Runnable {
public MyExecute() {}
public void run() {
System.out.println(Thread.currentThread().getName());
}
}
}

我觉得打印出来应该是“name1”才对啊,可打印的是“Thread-0”,要怎么设置线程名字呢
搞定了,这样写就行了
Thread t = new Thread(new MyExecute(), "线程名");
展开
 我来答
luxin1102
推荐于2018-05-07 · TA获得超过348个赞
知道小有建树答主
回答量:84
采纳率:100%
帮助的人:70.4万
展开全部
线程名要在线程中设置,即run()方法中,楼主的茄凯型写法是在设置main()方法颤猜的孙掘线程名,并非新建的线程名。代码改造一下:
public class Server {
public static void main(String[] args) {
int i = 0;
while (i < 10) {
i++;
Thread t = new Thread(new MyExecute("name" + i));
t.start();
}
}
}

class MyExecute implements Runnable {
private String name;

public MyExecute(String name) {
this.name = name;
}

public void run() {
Thread.currentThread().setName(this.name);
System.out.println(Thread.currentThread().getName());
}
}
996320
2010-07-09
知道答主
回答量:50
采纳率:0%
帮助的人:26.9万
展开全部
你的逻辑有错误

MyExecute是个class

当你在培缓new Thread(new MyExecute());时
并没有执行 t.currentThread().setName("name"+i);

你是先System的线前橘程名 然后才.setName; 你的逻辑顺序错了。。
仔配悔模细看看..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式