多线程同步-买票系统

窗口售票 简单同步

package IO;

public class DemoTicket implements Runnable {

    private int tickets = 100;

    public static void main(String[] args) {
        DemoTicket mt = new DemoTicket();

      Thread t1=new Thread(mt);  //创建线程 t1和t2
      Thread t2=new Thread(mt);
      t1.setName("窗口1");       //线程命名
      t2.setName("窗口2");
      t1.start();
      t2.start();

    }

    @Override
    public void run() {
        // TODO Auto-generated method stub
        while(true) {
            synchronized(this) {
                if(tickets <= 0) {
                    break;
                }
                try {
                    Thread.sleep(10);                //线程1睡,线程2睡
                } catch (InterruptedException e) {

                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName() + "...这是第" + tickets-- + "号票");
            }

        }
    }

}
时间: 2024-08-09 02:17:45

多线程同步-买票系统的相关文章

java2 多线程2 买票

/** * 这样买票会出现卖出超过100张票,把num静态化可以解决这个问题 */ private static void test1(){ System.out.println("开始卖票"+Thread.currentThread().getName()); Ticket ticket= new Ticket(); Thread t1=new Thread(ticket); Thread t2=new Thread(ticket); Thread t3=new Thread(tic

简单的多线程买票模拟程序(lock解决多线程存在大安全隐患)

—————————————————————— jdk1.5的lock代替synchronized,condition封装 Object对象里sleep,wait,notify ,notifyAll —————————————————————— /*  需求:  写一个简单的多线程模拟买票的程序  四个买票窗口,一共有100张票 */import java.util.concurrent.locks.*;   class Tick implements Runnable{         priv

简单的多线程买票模拟程序

/*  需求:  写一个简单的多线程模拟买票的程序  四个买票窗口,一共有100张票 */ class Tick implements Runnable{         private static  int tick=100;         private String window;         public  void windowName(String window){                 synchronized(Tick.class){              

多线程抢票系统浅析

笔者打算写个轻量版的秒杀系统,那么需要多线程模拟客户去抢购某个商品.故有想先写一个简单的多线程抢票系统加深一下对线程池,同步的理解. 1. 新建Java project,命名为ClientApp1, src文件夹里面新建demo文件夹. 项目结构如下, 2. 程序模拟的场景用例如下, 多个线程模拟多个客户去购买春运车票 每个客户购买车票[0,9],最少买0张,最多能买九张. 每个客户同步的买票,当某个线程在买票时,其他线程处于等待状态 所有客户线程买票完毕,主线程最后统计一共卖出多少张车票,切忌

java多线程编程(3)买票

1,买票非同步版本 http://www.cnblogs.com/anbylau2130/archive/2013/04/17/3025347.html很详细 1 public class 多线程2 { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 Runnable r=new mythread(); 9 Thread t

【小白的java成长系列】——多线程初识(多人买票问题)

本来这节内容是要到后面来说的,因为最近在弄并发的问题,推荐一本书<java并发编程实战>,深入的讲解了多线程问题的.本人最近也刚好在看这本书,还不错的~ 多线程的相关概念,就不用说了的,自己可以去网上查找,有一大堆关于它的讲解~ 先来看看买票的程序: package me.javen.thread.one; public class TicketDemo { public static void main(String[] args) { // 使用Thread类的方式 // TicketTh

多线程的使用实列-卖票系统

#import "ViewController.h" @interface ViewController () { UILabel *showLable; int curTicketNum; int saleTicketNum; NSString *saleWindowName; NSCondition *conditionClock; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidL

买票问题-线程的同步

1 //买票问题 2 package ThreadL; 3 4 public class Thread9 { 5 public static void main(String[] args){ 6 Thread th1 = new Thread(new Thread9L(),"AAA"); 7 Thread th2 = new Thread(new Thread9L(),"BBBBBB"); 8 th1.start(); 9 th2.start(); 10 } 11

Java多线程同步 synchronized 关键字的使用

代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A,没有的话,直接运行它包括两种用法:synchronized 方法和 synchronized 块. JAVA多线程买票案例 synchronized 同步 用synchronized 块实现同步 public static void main(String[] args) { // runable对