线程问题,谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/19 08:44:30
public class a extends Thread{

synchronized public void run(){
for(int i=0;i<10;i++){
System.out.println(currentThread().getName()+" "+i);
try{sleep(1000);}
catch(InterruptedException e){}}}
public static void main(String args[]){
a x=new a();
a y=new a();
x.setName("线程1");
y.setName("线程2");
x.start();
y.start();}}
请高手看这个问题,x执行同步方法时,当sleep进入阻塞状态时, y能抢占同步锁???小弟的机器跑出来的是0,0,1,1,2,2,3,3,。。。这是怎么回事啊???这个是个cup有关系么??请高手指教

//看看下面结果,是你的程序改了一点点的结果
import java.lang.*;
public class a extends Thread{

synchronized public void run(){
for(int i=0;i<10;i++){
System.out.println(currentThread().getName()+" "+i);
try{sleep(Math.round(Math.random()*1000));}
catch(InterruptedException e){}}}
public static void main(String args[]){
a x=new a();
a y=new a();
x.setName("线程1");
y.setName("线程2");
x.start();
y.start();}}