实现线程的第二种方法:实现了Runnable接口

public class ThreadTest3
{
public static void main(String[] args)
{
Thread  t1=new Thread(new ResourceTest());
Thread t2=new Thread(new ResourceTest());
t1.start();
t2.start();
}
}
class ResourceTest implements Runnable
{
int temp=0;
public void run()
{
while (true)
{
System.out.println("temp"+temp++);
try
{
Thread.sleep(100);
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

if (temp==20)
{
break;
}
}
}

}


输出:

temp0
temp0
temp1
temp1
temp2
temp2
temp3
temp3
temp4
temp4
temp5
temp5
temp6
temp6
temp7
temp7
temp8
temp8
temp9
temp9
temp10
temp10
temp11
temp11
temp12
temp12
temp13
temp13
temp14
temp14
temp15
temp15
temp16
temp16
temp17
temp17
temp18
temp18
temp19

temp19

如果把main方法中的

Thread  t1=new Thread(new ResourceTest());

Thread t2=new Thread(new ResourceTest()); 这两行代码换成

ResourceTest rt=new ResourceTest();
Thread  t1=new Thread(rt);

Thread t2=new Thread(rt);的话,输出不是重复的,如果有重复,说明操作系统是双核的,在单核操作系统中,线程是没有意义的,

注释:上面两种情况之下输出为顺序的,是因为temp变量是全局变量,如果是局部变量的话,就会出现乱序,还有,如果没有sleep方法延迟的话,也会出现一点乱序,因为线程是不可控的,如果没有时间限制,有一些后面的线程可能会提前发生

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭