首页 > 代码库 > 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 简单秒杀
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。