sleep()的作用
1.计时器用法
1小时的计时器
package thread;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestSleep {
public static void main(String[] args) {
Date starTime = new Date(System.currentTimeMillis());
int i = 0;
while (true){
try {
Thread.sleep(1000);
i++;
System.out.println(new SimpleDateFormat("HH:mm:ss").format(starTime));
starTime = new Date(System.currentTimeMillis());
if (i==3600){
break;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
2.模拟网络延时,放大效果
抢票程序
package thread;
import java.util.concurrent.locks.ReentrantLock;
//买票系统
public class MyTreadTest implements Runnable{
static int ticket = 100;
ReentrantLock reentrantLock = new ReentrantLock();
@Override
public void run() {
int i = 0;
while (true){
reentrantLock.lock();
++i;
System.out.println(Thread.currentThread().getName() + "抢到第"+ticket-- +"票");
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
reentrantLock.unlock();
if(ticket<=0){
System.out.println(Thread.currentThread().getName() + i);
break;
}
}
}
public static void main(String[] args) {
MyTreadTest t1 = new MyTreadTest();
MyTreadTest t2 = new MyTreadTest();
MyTreadTest t3 = new MyTreadTest();
new Thread(t1,"小米").start();
new Thread(t2,"王二").start();
new Thread(t3,"张三").start();
}
}