「java售票」java售票系统代码

博主:adminadmin 2022-12-20 20:21:06 81

今天给各位分享java售票的知识,其中也会对java售票系统代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

模拟售票 java 售票窗接口Wicket方法:sellTicket()

interface Wicket {

Object obj = new Object();

public void sellTicket();

public void wicketName();

}

class MovieWicket implements Wicket, Runnable {

int MovieTicket = 30;

int Eachticket = 10;

public void run() {

for (; Eachticket  0; Eachticket--) 

sellTicket();

}

public synchronized void sellTicket() {

if (MovieTicket  0  Eachticket  0)

System.out.println("MovieTicket剩余" + --MovieTicket + " "

+ Thread.currentThread().getName());

}

public void wicketName() {

}

}

class BusWicket implements Wicket, Runnable {

int BusTicket = 30;

int Eachticket = 10;

public void run() {

for (; Eachticket  0; Eachticket--)

sellTicket();

}

public synchronized void sellTicket() {

if (BusTicket  0  Eachticket  0)

System.out.println("BusWicket剩余" + --BusTicket + " "

+ Thread.currentThread().getName());

}

public void wicketName() {

}

}

class TrainWicket implements Wicket, Runnable {

int TrainTicket = 30;

int Eachticket = 10;

public void run() {

for (; Eachticket  0; Eachticket--) 

sellTicket();

}

public synchronized void sellTicket() {

if (TrainTicket  0  Eachticket  0)

System.out.println("TrainTicket剩余" + --TrainTicket + " "

+ Thread.currentThread().getName());

}

public void wicketName() {

}

}

public class WicketDemo {

static void DoubleThread(Runnable oj) {

Thread t1 = new Thread(oj);

Thread t2 = new Thread(oj);

t1.setName("线程1");

t2.setName("线程2");

t1.start();

t2.start();

}

public static void main(String[] args) {

MovieWicket mw = new MovieWicket();

BusWicket bw = new BusWicket();

TrainWicket tw = new TrainWicket();

while (mw.MovieTicket != 0 || bw.BusTicket != 0 || tw.TrainTicket != 0) {

long t1 = System.currentTimeMillis();

int rand = (int) (Math.random() * 3);

if (rand == 0  mw.MovieTicket0) {

System.out.println("正在卖10张电影票!");

WicketDemo.DoubleThread(mw);

mw.Eachticket = 10;

} else if (rand == 1  bw.BusTicket 0) {

System.out.println("正在卖10张汽车票!");

 WicketDemo.DoubleThread(bw);

 bw.Eachticket = 10;  

} else if(rand == 2  tw.TrainTicket 0) {

System.out.println("正在卖10张火车票!");

 WicketDemo.DoubleThread(tw);

 tw.Eachticket = 10;  

}

long t2 = System.currentTimeMillis();

if (t2 - t1  3000) {

try {

Thread.sleep(3000 - t2 + t1);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

}

刚好我也在学多线程,就拿你的问题练习一下,写出来一坨翔给你参考一下。你的要求应该是已经完全满足了,期待高手优化。

java多线程的卖票问题

首先,定义的锁(lock)不对,必须是同一个锁,像你这样用this,new多少个MyThread就有多少个锁,违反了线程的同步机制;

其次,你如果想要呈现多线程的竞争,不可以在run方法里让一个线程一直运行而不释放锁,应该使用wait()/notify();

以下我稍微修改下,会形成两个线程交替执行的情形:

public class ThreadTest {

public static Object obj = new Object();

public static int number = 10;// 用static共享票源,不知道可以不,按理说是可以的

/**

 * @param args

 */

public static void main(String[] args) {

// TODO Auto-generated method stub

MyThread my = new MyThread();

MyThread my2 = new MyThread();

Thread t1 = new Thread(my2, "2号窗口");

Thread t2 = new Thread(my, "1号窗口");

t1.start();

t2.start();

}

static class MyThread implements Runnable {

public void run() {

while (true)

synchronized (obj) {

if (number  0) {

System.out.println(Thread.currentThread().getName()

+ "正在卖票," + "还剩" + number + "张票");

number--;

obj.notifyAll();

try {

obj.wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

} else

break;

}

}

}

}

java编程实现景区售票规则:成人票每人10元,儿童票折半(如果儿童身高不超过1.2

这个规则就是设计一个方法,该方法最后值为一个票价,参数应该是身高,所以有如下代码

public class PriceTest {

    public static void main(String[] args) {

        int childPrice = getPrice(1.2);

        int adultPrice = getPrice(1.5);

        System.out.println("1.2米身高的票价为:"+childPrice);

        System.out.println("1.5米身高的成人票价为:"+adultPrice);

    }

    private static int getPrice(double height) {

        return height  1.2?10:5;

    }

}

最后结果如下:

java编程:简单的售票系统问题

你的不是调试的问题 是错 通过编译了 但是你想实现的没有 很多错误抛出了 。。。

java售票的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java售票系统代码、java售票的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-20,除非注明,否则均为首码项目网原创文章,转载请注明出处。