二、实验内容 1.完成填空并上机验证下面代码,给出代码段的主要功能。 class Sell{ int fiveLeft=2,tenLeft=0,twentyLeft=0; String s=null; public synchronized void SellTickets(int money){ if(money==5) { fiveLeft=fiveLeft+1; s="给你入场券您的钱正好!"; System.out.println(s); }else if(money==20){ while(fiveLeft<3){ try{ wait(); }catch(InterruptedException e){} fiveLeft=fiveLeft-3; twentyLeft=twentyLeft+1; s="给你入场券"+"你给我 20,找你 15 元"; System.out.println(s); } notifyAll(); } } } public class Demo implements { Sell sell; Thread twenty,five;public Demo(){ twenty=new Thread(this); five=new Thread(this); sell=new Sell(); twenty. ; five. ; } public static void main(String[] args) { // TODO code application logic here new Demo(); } public void run(){ if(Thread.currentThread()==twenty) { sell.SellTickets(20); }else if(Thread.currentThread()==five){ sell.SellTickets(5); } } }
时间: 2024-04-06 15:32:38 浏览: 17
该代码是一个多线程的售票系统,主要功能是模拟售票过程。Sell类中有三个变量表示售票窗口剩余的五元、十元、二十元的数量。SellTickets方法通过synchronized关键字实现同步,保证了多线程同时访问时不会出现数据冲突。如果顾客给了5元,那么窗口就会将fiveLeft加1,然后输出“给你入场券您的钱正好!”。如果顾客给了20元,那么窗口会判断fiveLeft是否大于等于3,如果不是,则进入等待状态,直到有足够的五元钞票后再进行售票。如果有足够的五元钞票,那么窗口就会将fiveLeft减去3,twentyLeft加1,然后输出“给你入场券你给我 20,找你 15 元”。Demo类中创建了一个Sell对象和两个线程twenty和five,分别表示售票窗口接受20元和5元的请求。在run方法中,如果当前线程是twenty,则执行sell.SellTickets(20);如果当前线程是five,则执行sell.SellTickets(5)。
相关问题
出2个交换二次积分顺序的填空题,并给出答案
1. $\iint\limits_{D} e^{-x^2-y^2}dxdy=\int\limits_{0}^{1}\int\limits_{0}^{2\pi} e^{-r^2}r d\theta dr=\pi(1-e^{-1})$
2. $\iint\limits_{D} xy^2dxdy=\int\limits_{-1}^{1}\int\limits_{0}^{\sqrt{1-x^2}} xy^2dydx=\frac{1}{8}$
y[i] = int(file.split("_")[0])这段python代码作用
这段代码是用来从文件名中提取标签信息的。以 "_" 为分隔符,将文件名拆分成多个子字符串,并取第一个子字符串,将其转换成整数类型,赋值给 y 数组的第 i 个元素。具体来说,假设文件名为 "2_image.jpg",则该代码将会提取出 "2" 这个标签信息,并将其转换为整数类型,赋值给 y 数组的第 i 个元素。