zoukankan      html  css  js  c++  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;
    	}
    
    }
  • 相关阅读:
    2016华中农业大学预赛 E 想法题
    2016华中农业大学预赛 B 数学
    render()
    钩子函数
    redirect_uri域名与后台配置不一致,错误码:10003
    群发次数
    表名
    intval()函数
    render()
    $this->autoRender = false
  • 原文地址:https://www.cnblogs.com/ouyangping/p/6880122.html
Copyright © 2011-2022 走看看