猿问

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

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-0
Hello1
当前线程Thread-0
Hello2
Hello0
当前线程Thread-1
Hello3
当前线程Thread-1
Hello4
当前线程Thread-1
Hello5
当前线程Thread-0
Hello6

为什么【第一个】那里的返回了2个地址,上面Hello1前有4个【当前线程。。。。】
他们是有先后顺序的吗


慕姐4208626
浏览 433回答 2
2回答

神不在的星期二

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

芜湖不芜

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

相关分类

Java
我要回答