6.线程的休眠
所谓的线程休眠指的是让线程执行速度稍微变慢一点。休眠方法如下
static void sleep(long millis) throws InterruptedException
观察:休眠的特点代码如下
public class TestSleep implements Runnable{
private int mony=10;
@Override
public void run() {
for(int i=0;i<100;i++){
try {
Thread.sleep(1000);//线程休眠
} catch (InterruptedException e) {
e.printStackTrace();
}
if(mony>0) {
System.out.print("购物,mony = " + this.mony--+";");
}
}
}
}
class MySleep{
public static void main(String[] args) {
TestSleep testSleep = new TestSleep();
Thread t1 = new Thread(testSleep);
Thread t2 = new Thread(testSleep);
Thread t3 = new Thread(testSleep);
t1.start();
t2.start();
t3.start();
}
}
运行结果如下
购物,mony = 9;购物,mony = 10;购物,mony = 10;购物,mony = 8;购物,mony = 8;购物,mony = 7;购物,mony = 6;购物,mony = 6;购物,mony = 5;购物,mony = 3;购物,mony = 4;购物,mony = 2;购物,mony = 0;购物,mony = 1;
从结果已经看到数据出现了问题。
结论:默认情况下,在休眠的时候如果设置了多个线程对象,那么所有的线程对象将一起进入到run方法(所谓的一起进入实际上是因为先后顺序实在太短了,但实际上有区别)就是因为这细微查到会导致运行结果错误。