Java實驗報告(七)及總結


一、實驗報告

實驗任務詳情:

完成火車站售票程序的模擬。
要求:
(1)總票數1000張;
(2)10個窗口同時開始賣票;
(3)賣票過程延時1秒鍾;
(4)不能出現一票多賣或賣出負數號票的情況。

class Market  implements Runnable {

    private int ticket;

    public int getTicket() {
        return ticket;
    }

    void setTicket(int ticket) {
        this.ticket = ticket;
    }

    public void run() {
        for (int i = 1; i < 100; i++) {
            synchronized (this) {
                if (ticket > 0) {
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    ticket--;
                    System.out.println(Thread.currentThread().getName() + "售票成功;" + "剩余:" + ticket+"");
                }
            }
        }
    }
}
 class seven {
    public static void main(String[] args){
        Thread[] t=new Thread[10];
        Market mar=new Market();
        mar.setTicket(1000);
        for(int i=0;i<10;i++){
            new Thread(mar,i+1+"號窗口").start();
        }
    }
}

 

二、總結

進程與線程

進程:是執行中一段程序,即一旦程序被載入到內存中並准備執行,它就是一個進程。進程是表示資源分配的的基本概念,又是調度運行的基本單位,是系統中的並發執行的單位。

線程:單個進程中執行中每個任務就是一個線程。線程是進程中執行運算的最小單位。

進程與線程的區別

線程是程序執行的最小單位,而進程是操作系統分配資源的最小單位;

一個進程由一個或多個線程組成,線程是一個進程中代碼的不同執行路線;

進程之間相互獨立,但同一進程下的各個線程之間共享程序的內存空間(包括代碼段,數據集,堆等)及一些進程級的資源(如打開文件和信號等),某進程內的線程在其他進程不可見;

調度和切換:線程上下文切換比進程上下文切換要快得多。
   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM