为了账号安全,请及时绑定邮箱和手机立即绑定

java System.out.println("当前线程"+Thread.currentThre

java System.out.println("当前线程"+Thread.currentThre

慕姐4208626 2019-04-10 18:15:49
package animal;class HelloThread implements Runnable{int i;public void run(){        i=0;     System.out.println("当前线程"+Thread.currentThread());//第一个     while(true)     {                System.out.println("当前线程"+Thread.currentThread().getName());         System.out.println("Hello"+i++); if(i>5)     break;     } }}public class text{public static void main(String[]args){HelloThread r=new HelloThread();Thread t=new Thread(r);Thread t2=new Thread(r);t.start();t2.start();}}结果当前线程Thread[Thread-1,5,main]当前线程Thread-1当前线程Thread[Thread-0,5,main]当前线程Thread-0Hello1当前线程Thread-0Hello2Hello0当前线程Thread-1Hello3当前线程Thread-1Hello4当前线程Thread-1Hello5当前线程Thread-0Hello6为什么【第一个】那里的返回了2个地址,上面Hello1前有4个【当前线程。。。。】他们是有先后顺序的吗
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

因为你开了两个线程,所以返回有两个地址。
一句代码的执行在计算机中也是分为很多步骤的(比如高级语言、汇编语言、二进制转换),有的执行一半可能就会挂起状态(你这里的变量具有非原子性,可能会被占用资源),资源被其他占用,所以这里并不是1到6顺序输出,也不是先完成线程1再线程2的。

查看完整回答
反对 回复 2019-05-16
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

开启了两个线程,所以输出两个线程名。
计算机的CPU是抢占资源,多线程默认是异步执行,故没有顺序。但是可以通过join,countdown等方法控制线程之间的执行顺序。

查看完整回答
反对 回复 2019-05-16
  • 2 回答
  • 0 关注
  • 432 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信