java线程内调用别的线程有关的问题.
答案:1 悬赏:80
解决时间 2021-02-08 12:48
- 提问者网友:烟刺痛了眼
- 2021-02-07 18:36
java线程内调用别的线程有关的问题.
最佳答案
- 二级知识专家网友:闲懒诗人
- 2021-02-07 19:15
两个值你这样打印出来肯定是相同的,因为别的线程还没启动。不要认为多线程就是几个线程真的是在一起运行,在运行的现场永远只有一个,只有当前线程结束或者挂起别的线程才有机会运行。在你代码里主函数在运行的时候,虽然你启动了别的线程但是这个时候主函数的还在运行,也就是说主函数所在的线程占据了cpu,所以你其他线程是没有启动的,当然那些线程里的代码也是没作用的。你打印的值当然是一样的。
对于你第三个问题,你就是想让t线程运行起来,然后才能做接下来的动作吧。
import java.util.logging.Level;
import java.util.logging.Logger;
public class tett {
public static void main(String[] args) {//主函数
Test t = new Test();
t.start();//调用线程Test
try {
Thread.sleep(300);
} catch (InterruptedException ex) {
Logger.getLogger(tett.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("t.t====" + t.t + "\nt.getT()=" + t.getT());//输出线程调用后的线程内的变量值
}
}
把你代码改成这样就可以了,让主函数的线程休眠,让出cpu,这样你的t线程就开始运行了,而一旦t线程运行起来主函数也就只能在t线程运行结束才能接着往下走了。
对于你第三个问题,你就是想让t线程运行起来,然后才能做接下来的动作吧。
import java.util.logging.Level;
import java.util.logging.Logger;
public class tett {
public static void main(String[] args) {//主函数
Test t = new Test();
t.start();//调用线程Test
try {
Thread.sleep(300);
} catch (InterruptedException ex) {
Logger.getLogger(tett.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("t.t====" + t.t + "\nt.getT()=" + t.getT());//输出线程调用后的线程内的变量值
}
}
把你代码改成这样就可以了,让主函数的线程休眠,让出cpu,这样你的t线程就开始运行了,而一旦t线程运行起来主函数也就只能在t线程运行结束才能接着往下走了。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯