• 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;
    	}
    
    }
  • 相关阅读:
    python主流框架简介和Django框架的使用
    如何确定计算上已安装的.NET framework版本
    访问另一台主机时报错0x80004005
    sql server自动备份数据库
    sql server创建维护计划报错“不是有效的win32”
    sql server agent代理备份数据库报错‘用户 'sa' 登录失败’
    sql server日志查错
    windows10安装64位Orcale 19c
    触发器基本知识
    MediaElement 的两种模式
  • 原文地址:https://www.cnblogs.com/ouyangping/p/6880122.html
Copyright © 2020-2023  润新知