⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example.java

📁 利用java 模拟多线程 notify()
💻 JAVA
字号:
import java.lang.Runnable;
import java.lang.Thread;
//注意,每次运行的结果可能会不同,只是线程执行先后的顺序不同造成的。


//负责卖票的类
class TicketSeller {
 int fiveNumber=3,tenNumber=0,twentyNumber=0;
 public synchronized void sellTicket(int recieveMoney)
	{
	 if(recieveMoney==5)
		{
		 fiveNumber++;
		 System.out.print(Thread.currentThread().getName()+"给我5元钱,这是你的一张电影票\n");
		}
		else 
			if(recieveMoney==10)
		{
			while(fiveNumber<1)
			{
				try{
					System.out.print(Thread.currentThread().getName()+"等待\n");
					wait();//如果线程此时占用CPU 则会进入中断状态
					System.out.print(Thread.currentThread().getName()+"结束等待\n");
				}catch(InterruptedException e)
				{System.out.print(e.getMessage());}
			}
			fiveNumber--;
			tenNumber++;
            System.out.print(Thread.currentThread().getName()+"给我10元钱,找您5元,这是你的一张电影票\n");
		}
		else 
			if(recieveMoney==20)
		{
			while(fiveNumber<1||tenNumber<1)
			{
				try{
					System.out.print(Thread.currentThread().getName()+"等待\n");
					wait();
					System.out.print(Thread.currentThread().getName()+"结束等待\n");
				}catch(InterruptedException e)
				{System.out.print(e.getMessage());}
			}
			fiveNumber--;
			tenNumber++;
            System.out.print(Thread.currentThread().getName()+"给我20元钱,找您15元,这是你的一张电影票\n");
		}
		notifyAll();
	}
}

class cinema implements Runnable
{
	Thread zhang ,li,zhao;//电影院中买票的进程
	TicketSeller seller;//售票员

	cinema(){
	
	zhang = new Thread(this);
	li = new Thread(this);
	zhao = new Thread(this);

	zhang.setName("张三");
	li.setName("李四");
	zhao.setName("赵五");

	seller = new TicketSeller();
}
	public void run()
	{
		if(Thread.currentThread()==zhang)
		{
			seller.sellTicket(20);
		}
		else
			if(Thread.currentThread()==li)
		{
			seller.sellTicket(10);
		}
		else 
			if(Thread.currentThread()==zhao)
		{
			seller.sellTicket(5);
		}

	}
}

public class Example
{
	public static void main(String[] args)
	{
		cinema ma = new cinema();
		ma.zhang.start();
		ma.li.start();
		ma.zhao.start();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -