黑马程序员技术交流社区
标题:
多线程setName()问题
[打印本页]
作者:
张禄宇
时间:
2013-6-9 17:04
标题:
多线程setName()问题
本帖最后由 张禄宇 于 2013-6-14 09:22 编辑
public class Test2 extends Thread{
public Test2(String name){
super(name);
}
public static void main(String[] args) throws InterruptedException {
Test2 t2=new Test2("NEW MEMBERS"+"");
t2.start();
t2.setName("noname");
t2.join();
System.out.println(t2.getName()+"");
}
@Override
public void run() {
System.out.println("Run first");
System.out.println("RUN1:"+getName()+"");
}
}为什么输出结果是:
Run first
RUN1:noname
noname
为什么先执行了 t2.setName("noname");????求解释
作者:
风乐
时间:
2013-6-9 17:51
public class Test extends Thread{
public Test(String name){
super(name);
}
public static void main(String[] args) throws InterruptedException {
Test t2=new Test("NEW MEMBERS"+"");
t2.start();
//并不是说一定就先执行setName语句,因为start()后改新线程进入就绪状态,只是有资格抢cpu的执行权。
//主线程和你新建的线程谁抢到执行权谁就先执行,运行结果只是说明主线程先继续运行了
Thread.sleep(1000);
t2.setName("noname");
t2.join();
System.out.println(t2.getName()+"");
}
@Override
public void run() {
System.out.println("Run first");
System.out.println("RUN1:"+getName()+"");
}
}
作者:
蚂蚁搬家
时间:
2013-6-9 18:11
楼上正解,顶
作者:
袁梦希
时间:
2013-6-12 19:00
楼主你好 如果问题已经解决 请把帖子的类型改为已解决 然后会给你发几个粽子吃
作者:
张禄宇
时间:
2013-6-13 14:53
怎么设置成已解决。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2