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个【当前线程。。。。】
他们是有先后顺序的吗
因为你开了两个线程,所以返回有两个地址。
一句代码的执行在计算机中也是分为很多步骤的(比如高级语言、汇编语言、二进制转换),有的执行一半可能就会挂起状态(你这里的变量具有非原子性,可能会被占用资源),资源被其他占用,所以这里并不是1到6顺序输出,也不是先完成线程1再线程2的。
开启了两个线程,所以输出两个线程名。
计算机的CPU是抢占资源,多线程默认是异步执行,故没有顺序。但是可以通过join,countdown等方法控制线程之间的执行顺序。