Java教程

Java实现三人同时卖票线程问题

本文主要是介绍Java实现三人同时卖票线程问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java实现卖票问题,三人同时卖票,但是不能卖同一张票。
Java卖票
代码如下:

/**
 * 
 */
package com.jasmyn.demo;

/**
 * @author jasmyn
 * @date 2020年11月24日上午8:16:13
 * @package com.jasmyn.demo
 */
public class Ticket implements Runnable {
	int number=100;
	private Object mutex=new Object();
	private int x=0;

	@Override
	public void run() {
		// TODO Auto-generated method stub
		while(true) {
			if(x%2==0) {
				synchronized (mutex) {
					try {
						Thread.sleep(1000);//暂停一秒
					}catch(InterruptedException e) {
						e.printStackTrace();
					}	 
					if(number>0) {
						System.out.println(Thread.currentThread().getName()+"正在销售第"+(number--)+"张票");
					}													
				}
			}else {
				this.cell();
			}
			x++;
			if(number<0) {
				break;
			}
		}
				
	}
	
	public synchronized void cell() {//同步方法
		try {
			Thread.sleep(200);//暂停一秒
		}catch(InterruptedException e) {
			e.printStackTrace();
		}
		if(number>0) {
			System.out.println(Thread.currentThread().getName()+"正在销售第"+(number--)+"张票");
		}
	}
}

测试代码:

/**
 * 
 */
package com.jasmyn.demo;

/**
 * @author jasmyn
 * @date 2020年11月24日上午8:15:34
 * @package com.jasmyn.demo
 */
public class TicketTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Ticket ticket=new Ticket();
		Thread t1=new Thread(ticket,"za");
		Thread t2=new Thread(ticket,"zs");
		Thread t3=new Thread(ticket,"zd");
		t1.start();
		t2.start();
		t3.start();
	}

}

这篇关于Java实现三人同时卖票线程问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!