线程休眠
sleep指当前线程阻塞的毫秒数
sleep存在异常InterruptedException
sleep时间达到后线程进入就绪状态
sleep可以模拟网络延时,倒计时等
s每个对象都有一个锁,sleep不会释放锁
多线程模拟购票
public class TestSleep01 implements Runnable{
private int ticketNum=10;//定义的票数
@Override
public void run() {
while (true){
if (ticketNum<=0){
break;
}
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"获得了第"+ticketNum+"张票");
}
}
public static void main(String[] args) {
TestSleep01 testSleep01 = new TestSleep01();
//模拟多线程买票
new Thread(testSleep01,"小明").start();
new Thread(testSleep01,"小李").start();
new Thread(testSleep01,"黄牛党").start();
}
}
模拟倒计时
//模拟倒计时
public class TestSleep02 {
public static void tenDown() throws InterruptedException {
int num=10;
while (true){
System.out.println(num--);
Thread.sleep(1000);
if (num<0){
break;
}
}
}
public static void main(String[] args) {
try {
tenDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//获取当前时间
public static void main(String[] args) {
Date startTime=new Date(System.currentTimeMillis());//获取当前系统的时间
while (true)
try {
Thread.sleep(1000);
System.out.println(new SimpleDateFormat("HH:mm:ss").format(startTime));//输出当前时间的格式
startTime=new Date(System.currentTimeMillis());//刷新当前时间
} catch (InterruptedException e) {
e.printStackTrace();
}
}