Java多线程练习:ticket卖票程序】的更多相关文章

/*需求:简单的卖票程序多个窗口买票 */ class Ticket extends Thread{    private static int tick=100;    public void run()    {        while(true)        {            if(tick>0)            {                System.out.println(Thread.currentThread().getName()+"sale:--…
/** * 2019年8月8日16:05:05 * 目的:实现火车站卖票系统(第一种创建线程的方式) * @author 张涛 * */ //第一种方式直接继承Thread来创建线程 class T1 extends Thread { //加static的原因是:每次new一个对象出来,该对象就会有一个tickets属性,这样的话就相当于卖2倍票数,当然错误 private static int tickets = 1000; //加static的原因是:确定同步的是同一个str,原理同上. s…
本篇重点:多线程共享资源时发生的互斥问题 一般的我们售卖电影票或者火车票时会有多个窗口同时买票, 我们来看测试代码:主方法new一个Ticket(一个堆),之后三个线程来启动(三个窗口买票) class Ticket implements Runnable{ private static int ticket=10; @Override public void run() { for(int i=1;i<=100;i++){ System.out.println(Thread.currentTh…
import java.util.ArrayList; import java.util.List; public class 多线程 { // public static int j=0; public static long a=0; public static void main(String[] args) throws InterruptedException { List<Thread> list = new ArrayList<Thread>(); System.ou…
设计一个多线程程序如下:设计一个火车售票模拟程序.假如火车站要有100张火车票要卖出,现在有5个售票点同时售票,用5个线程模拟这5个售票点的售票情况 1.要求打印出每个售票点所卖出的票号 2.各售票点不能售出相同票号的火车票 package com.hebust.java.third; import java.util.Random; public class SaleTicket implements Runnable { public int total; public int count;…
* 如何解决线程安全问题呢? *  * 要想解决问题,就要知道哪些原因会导致出问题:(而且这些原因也是以后我们判断一个程序是否会有线程安全问题的标准) * A:是否是多线程环境 * B:是否有共享数据 * C:是否有多条语句操作共享数据 *  * 我们来回想一下我们的程序有没有上面的问题呢? * A:是否是多线程环境 是 * B:是否有共享数据 是 * C:是否有多条语句操作共享数据 是 *  * 由此可见我们的程序出现问题是正常的,因为它满足出问题的条件. * 接下来才是我们要想想如何解决问题…
通过加入延迟后,就产生了连个问题: * A:相同的票卖了多次 *   CPU的一次操作必须是原子性的 * B:出现了负数票 *   随机性和延迟导致的 public class SellTicketDemo { public static void main(String[] args) { // 创建资源对象 SellTicket st = new SellTicket(); // 创建三个线程对象 Thread t1 = new Thread(st, "窗口1"); Thread…
我们设置三个对象分别同时抢20张票,利用多线程实现. public class Web123506 implements Runnable{ private int ticteksNums=20;//票数 @Override public void run() { while (true){ if(ticteksNums<0){ break; } /* try { //睡眠 Thread.sleep(200); } catch (InterruptedException e) { e.print…
线程同步方法: (1).同步代码块,格式: synchronized (同步对象){ //同步代码 } (2).同步方法,格式: 在方法前加synchronized修饰 问题: 多个人同时买票. 1.资源没有同步. package thread; public class Tickets implements Runnable { private int count = 5; @Override public void run() { for (int i = 0; i < 10; ++i) {…
多线程编程优点 进程之间不能共享内存,但线程之间共享内存非常容易. 系统创建线程所分配的资源相对创建进程而言,代价非常小. Java中实现多线程有3种方法: 继承Thread类 实现Runnable接口 实现Callable接口(参考<Java编程思想(第4版)>  21.2.4章节,原来一直以为是2种,后来发现是3种) 第一种实现方法—继承Thread类 继承Thread类,需要覆盖方法 run()方法,在创建Thread类的子类时需要重写 run(),加入线程所要执行的代即可. 下边是一个…