• 生成随机数模拟售票,学习多线程


    最近应用开发的程过中出现了一个小问题,顺便记录一下原因和方法--生成随机数

        假设有火车票100张,创立10个程线模拟10个售票点,每一个售票点随机生成间时卖一张票。 印打出售票程过,注意应用synchronized确保一同张票只能卖出一次。

        

    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class Resource {
    
    	int ticketNum;
    	boolean flag = false;
    	SimpleDateFormat sdf;
    
    	int i = 1;
    
    	public Resource(int ticketNum) {
    		this.ticketNum = ticketNum;
    
    		sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
    	}
    
    	public synchronized void sellTicket(Seller s) {
    		if (i <= ticketNum) {
    			System.out.println("在" + sdf.format(new Date()) + " 第" + s.num
    					+ "售票点卖了第" + i + "张票...");
    			i++;
    
    		} else {
    			flag = true;
    		}
    	}
    
    }
        每日一道理
    信念是巍巍大厦的栋梁,没有它,就只是一堆散乱的砖瓦;信念是滔滔大江的河床,没有它,就只有一片泛滥的波浪;信念是熊熊烈火的引星,没有它,就只有一把冰冷的柴把;信念是远洋巨轮的主机,没有它,就只剩下瘫痪的巨架。
    public class Seller implements Runnable {
    
    	int num;
    	Resource rs;
    
    	public Seller(int num, Resource rs) {
    		super();
    		this.num = num;
    		this.rs = rs;
    	}
    
    	@Override
    	public void run() {
    		// TODO Auto-generated method stub
    		while (rs.flag == false) {
    			// 用调资源类的同步方法
    			rs.sellTicket(this);
    			try {
    				// 生成随机数(范围1-1000)
    				int random = (int) (Math.random() * 1000);
    				Thread.sleep(random);
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	}
    
    }
    public class Test {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Resource rs = new Resource(100);
    		for (int i = 0; i < 10; i++) {
    			Thread t = new Thread(new Seller(i, rs));
    			t.start();
    		}
    	}
    
    }

    文章结束给大家分享下程序员的一些笑话语录: 很多所谓的牛人也不过如此,离开了你,微软还是微软,Google还是Google,苹果还是苹果,暴雪还是暴雪,而这些牛人离开了公司,自己什么都不是。

  • 相关阅读:
    一般处理程序使用Session的方法
    EF Code First教程-03 数据库迁移Migrator
    EF Code First教程-02 约定配置
    EF Code First教程-01 创建一个简单的Code First程序
    构造方法后面加上了:base
    sql server 还原数据库时提示数据库正在使用,无法进行操作的解决方法
    使单元格td内部都是超链接
    设计模式~简单工厂模式(Factory)
    jQuery重置form表单的方法
    当编辑器中出现很一条一条的点时
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3036022.html
Copyright © 2020-2023  润新知