首页 > 代码库 > java 简单秒杀

java 简单秒杀

以下代码 不考虑多服务器

限制线程池的大小 和队列的限制来实现

 

package org.zhang;import java.util.concurrent.BlockingQueue;import java.util.concurrent.Executors;import java.util.concurrent.SynchronousQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;/** * 单服务器用线程池实现秒杀的思路一 *  * @author zhanghaijun *  */public class ExecutorsTest {	public static boolean flag = true; // 秒杀物品的标记	public static void main(String[] args) {		ThreadPoolExecutor pool = new ThreadPoolExecutor(1, 1, 0L,				TimeUnit.MILLISECONDS, new SynchronousQueue<Runnable>());		ThreadTest t1 = new ThreadTest("张三");		ThreadTest t2 = new ThreadTest("李四");		ThreadTest t3 = new ThreadTest("王五");		try {			pool.execute(t1);		} catch (Exception e) {			System.out.println(t1.getUserName() + "没有抢到");		}		try {			pool.execute(t3);		} catch (Exception e) {			System.out.println(t3.getUserName() + "没有抢到");		}		try {			pool.execute(t2);		} catch (Exception e) {			System.out.println(t2.getUserName() + "没有抢到");		}		pool.shutdown();	}}class ThreadTest extends Thread {	private String userName;	public ThreadTest(String userName) {		super();		this.userName = userName;	}	@Override	public void run() {		try {			Thread.sleep(200);			if (ExecutorsTest.flag) {				System.out.println(this.userName + "秒杀成功");				ExecutorsTest.flag = false;			}		} catch (InterruptedException e) {			e.printStackTrace();		}	}	public String getUserName() {		return userName;	}	public void setUserName(String userName) {		this.userName = userName;	}}

java 简单秒杀