139.线程阻塞

调用sleep线程阻塞

使用sleep方法达到线程阻塞的一些细节:

  1. sleep 指定当前线程阻塞的毫秒数
  2. sleep存在异常InterruptedException
  3. sleep时间达到后线程进入就绪状态
  4. sleep可以模拟网络延迟 1、倒计时等
  5. 每个对象都有一个锁,sleep不会释放锁

12306模拟抢票的例子中,是线程不安全的,高并发要采用同步和互斥的思想保证线程安全

写一个倒计时测试代码
package zy.thread;

import java.util.Date;
import java.text.SimpleDateFormat;


public class blockedSleep {
     
	public static void main(String[] args) throws InterruptedException {
     
		test1();
		test2();
	}
	
	//倒计时10秒
	public static void test1() throws InterruptedException {
     
		int num = 10;
		while(num > 0) {
     
			Thread.sleep(1000);
			System.out.println(num--);
		}
	}
	
	//倒计时10秒
	public static void test2() throws InterruptedException {
     
		//倒计时
		Date date = new Date(System.currentTimeMillis()+1000*10);
		long end = date.getTime();
		while(true) {
     
			System.out.println(new SimpleDateFormat("mm:ss").format(date));
			Thread.sleep(1000);
			date = new Date(date.getTime()-1000);
			if((end-1000*10) > date.getTime()) {
     
				break;
			}
		}
	}
}

  1. 133.实现Runnable接口实现多线程中模拟实现12306抢票 ↩︎

你可能感兴趣的:(java)