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;
    	}
    
    }
  • 相关阅读:
    mysql编码和Java编码相应一览表
    Swift开发之 使用系统的TabbarController
    Shiro Quartz之Junit測试Session管理
    爱加密Android APk 原理解析
    【机器学习基础】自适应提升
    select默认选择的实现方法
    怎样找对还有一半--第一章 品行与择偶关系
    一步步教你怎样自己主动部署博客
    HTML5的新特性
    DataTables Table plug-in for jQuery
  • 原文地址:https://www.cnblogs.com/ouyangping/p/6880122.html
Copyright © 2011-2022 走看看