導航:首頁 > 編程語言 > java購買電影票

java購買電影票

發布時間:2023-06-16 07:47:19

❶ 利用java,如何鎖定數組中的一個值,例如,購買電影票選座位,如何用java實現

這段代碼邏輯不清楚

  1. int[] number=new int[100]; 這個number表示什麼?座位號,一共100個座位?

  2. n 代表什麼?

最好把你的想法說下,這樣好幫助你

❷ 用java實現賣電影票的程序,實現5個窗口同時售賣100張票.(用數組保存)




{
@Override
publicvoidrun()
{
Stringname=Thread.currentThread().getName();
while(name.startsWith("窗口"))
{
if(tickets.length==0)
{
stop();
break;
}
intnum=(int)(Math.random()*tickets.length)+1;
tickets=newint[tickets.length-num];
System.out.println(name+"售出了"+num+"張票");
try
{
Thread.sleep(500);
}
catch(InterruptedExceptione)
{}
}
}

publicsynchronizedvoidstart()
{
for(inti=0;i<ts.length;i++)
{
Threadthread=ts[i];
if(thread==null)
{
thread=newThread(this);
thread.setPriority(Thread.MIN_PRIORITY);
thread.setName("窗口"+(i+1));
thread.start();
}
}
}

publicsynchronizedvoidstop()
{
for(inti=0;i<ts.length;i++)
{
Threadthread=ts[i];
if(thread!=null)
{
thread.interrupt();
}
thread=null;
}
notifyAll();
}

staticint[]tickets=newint[100];

privatestaticintWIN=5;

Thread[]ts=newThread[WIN];

publicstaticvoidmain(String[]args)
{
newYugi().start();
}
}

❸ java多線程 模擬售票窗口出售電影票,假設有100張電影票,有3個售票站,模擬各個售票站的售票情況

三個線程,用個同步方法取這100張票,售完為止

❹ java返回值

程序一的結構是這樣的, class SquareProperties, 這個class裡面有兩個普通method和一個main method. 你可以把一個method理解了一個工具包,用來實現一個功能的。double computeArea(double side), 這個method的功能就是計算面積。 你輸入了一個參數side, 這個method裡面把計算出的面積值返回給你。 第二個是求周長的,同理。
你在main method裡面調用這幾個方法,就能直接實現求周長和面積的功能了。
而程序二, 則把這兩個方法的內容直接混到main method裡面了。
你現在可能覺得程序二這種方法更方便, 但如果你以後做一些正規的軟體時, 如果把各種功能一氣都放到main裡面, 無法重復利用,且非常亂。 而把各種功能都分別包到一個個的method裡面,需要哪個就用哪個, 非常方便。

程序二中的public static。 public是許可權, 表示所有的程序,無論從哪來的,都能調用這個變數。
一般來說能不public的盡量不要。 為了安全和保密起見。
static, 靜態的。意思就是說, 給這個變數單獨分配一塊內存空間,誰都可以調用。如果這個變數不加static, 它就不是一個靜態變數。 而它在main method的外邊,是無法被main裡面的東西所調用的。 建議學習一下局部變數和全局變數。

這些東西我剛學JAVA的時候也非常糾結,一整個學期都沒明白, 直到下學期學數據結構的時候才頓悟。 如有不懂, 可私HI我留QQ之類。

❺ Java如何模擬多線程

Java提供了線程類Thread來創建多線程的程序。其實,創建線程與創建普通的類的對象的操作是一樣的,而線程就是Thread類或其子類的實例對象。每個Thread對象描述了一個單獨的線程。要產生一個線程,有兩種方法:
◆需要從Java.lang.Thread類派生一個新的線程類,重載它的run()方法;
◆實現Runnalbe介面,重載Runnalbe介面中的run()方法。

為什麼Java要提供兩種方法來創建線程呢?它們都有哪些區別?相比而言,哪一種方法更好呢?
在Java中,類僅支持單繼承,也就是說,當定義一個新的類的時候,它只能擴展一個外部類.這樣,如果創建自定義線程類的時候是通過擴展 Thread類的方法來實現的,那麼這個自定義類就不能再去擴展其他的類,也就無法實現更加復雜的功能。因此,如果自定義類必須擴展其他的類,那麼就可以使用實現Runnable介面的方法來定義該類為線程類,這樣就可以避免Java單繼承所帶來的局限性。
還有一點最重要的就是使用實現Runnable介面的方式創建的線程可以處理同一資源,從而實現資源的共享.
(1)通過擴展Thread類來創建多線程
假設一個影院有三個售票口,分別用於向兒童、成人和老人售票。影院為每個窗口放有100張電影票,分別是兒童票、成人票和老人票。三個窗口需要同時賣票,而現在只有一個售票員,這個售票員就相當於一個CPU,三個窗口就相當於三個線程。通過程序來看一看是如何創建這三個線程的。

public class MutliThreadDemo {
public static void main(String [] args){
MutliThread m1=new MutliThread("Window 1");
MutliThread m2=new MutliThread("Window 2");
MutliThread m3=new MutliThread("Window 3");
m1.start();
m2.start();
m3.start();
}
}
class MutliThread extends Thread{
private int ticket=100;//每個線程都擁有100張票
MutliThread(String name){
super(name);//調用父類帶參數的構造方法
}
public void run(){
while(ticket>0){
System.out.println(ticket--+" is saled by "+Thread.currentThread().getName());
}
}
}

程序中定義一個線程類,它擴展了Thread類。利用擴展的線程類在MutliThreadDemo類的主方法中創建了三個線程對象,並通過start()方法分別將它們啟動。
從結果可以看到,每個線程分別對應100張電影票,之間並無任何關系,這就說明每個線程之間是平等的,沒有優先順序關系,因此都有機會得到CPU的處理。但是結果顯示這三個線程並不是依次交替執行,而是在三個線程同時被執行的情況下,有的線程被分配時間片的機會多,票被提前賣完,而有的線程被分配時間片的機會比較少,票遲一些賣完。
可見,利用擴展Thread類創建的多個線程,雖然執行的是相同的代碼,但彼此相互獨立,且各自擁有自己的資源,互不幹擾。
(2)通過實現Runnable介面來創建多線程

public class MutliThreadDemo2 {
public static void main(String [] args){
MutliThread m1=new MutliThread("Window 1");
MutliThread m2=new MutliThread("Window 2");
MutliThread m3=new MutliThread("Window 3");
Thread t1=new Thread(m1);
Thread t2=new Thread(m2);
Thread t3=new Thread(m3);
t1.start();
t2.start();
t3.start();
}
}
class MutliThread implements Runnable{
private int ticket=100;//每個線程都擁有100張票
private String name;
MutliThread(String name){
this.name=name;
}
public void run(){
while(ticket>0){
System.out.println(ticket--+" is saled by "+name);
}
}
}

由於這三個線程也是彼此獨立,各自擁有自己的資源,即100張電影票,因此程序輸出的結果和(1)結果大同小異。均是各自線程對自己的100張票進行單獨的處理,互不影響。
可見,只要現實的情況要求保證新建線程彼此相互獨立,各自擁有資源,且互不幹擾,採用哪個方式來創建多線程都是可以的。因為這兩種方式創建的多線程程序能夠實現相同的功能。

由於這三個線程也是彼此獨立,各自擁有自己的資源,即100張電影票,因此程序輸出的結果和例4.2.1的結果大同小異。均是各自線程對自己的100張票進行單獨的處理,互不影響。
可見,只要現實的情況要求保證新建線程彼此相互獨立,各自擁有資源,且互不幹擾,採用哪個方式來創建多線程都是可以的。因為這兩種方式創建的多線程程序能夠實現相同的功能。
(3)通過實現Runnable介面來實現線程間的資源共享
現實中也存在這樣的情況,比如模擬一個火車站的售票系統,假如當日從A地發往B地的火車票只有100張,且允許所有窗口賣這100張票,那麼每一個窗口也相當於一個線程,但是這時和前面的例子不同之處就在於所有線程處理的資源是同一個資源,即100張車票。如果還用前面的方式來創建線程顯然是無法實現的,這種情況該怎樣處理呢?看下面這個程序,程序代碼如下所示:

+ View Code
結果正如前面分析的那樣,程序在內存中僅創建了一個資源,而新建的三個線程都是基於訪問這同一資源的,並且由於每個線程上所運行的是相同的代碼,因此它們執行的功能也是相同的。
可見,如果現實問題中要求必須創建多個線程來執行同一任務,而且這多個線程之間還將共享同一個資源,那麼就可以使用實現Runnable介面的方式來創建多線程程序。而這一功能通過擴展Thread類是無法實現的,讀者想想看,為什麼?
實現Runnable介面相對於擴展Thread類來說,具有無可比擬的優勢。這種方式不僅有利於程序的健壯性,使代碼能夠被多個線程共享,而且代碼和數據資源相對獨立,從而特別適合多個具有相同代碼的線程去處理同一資源的情況。這樣一來,線程、代碼和數據資源三者有效分離,很好地體現了面向對象程序設計的思想。因此,幾乎所有的多線程程序都是通過實現Runnable介面的方式來完成的。

閱讀全文

與java購買電影票相關的資料

熱點內容
美版a1453是什麼版本 瀏覽:517
電腦里的文件夾按照拼音歸類 瀏覽:996
文件管理器怎麼把視頻壓縮成文件 瀏覽:477
標准化文件名稱包括哪些 瀏覽:85
win10不能讀取dll文件 瀏覽:882
雲騎士重裝系統找不到usb字樣文件 瀏覽:42
皖事通app社保年限在哪裡看 瀏覽:65
為什麼快影顯示沒網路 瀏覽:356
華為如何讓手機升級提醒紅1消失 瀏覽:345
我愛九九商城app 瀏覽:587
劍靈蒼穹武器升級 瀏覽:248
微信錢包微粒貸 瀏覽:654
滾動字幕屏找不到文件 瀏覽:990
鄭州青少年學編程哪個機構比較好 瀏覽:866
ps文件打開不是彩色的 瀏覽:781
監控硬碟格式化工具 瀏覽:512
下載新版本微信6311 瀏覽:440
有哪些手游可以鍛煉編程能力 瀏覽:602
網路高清監控安裝方法 瀏覽:165
linuxtty切換 瀏覽:966

友情鏈接