程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> [javaSE] 多線程(售票例子),javase售票

[javaSE] 多線程(售票例子),javase售票

編輯:JAVA綜合教程

[javaSE] 多線程(售票例子),javase售票


需求:簡單的買票程序,多個窗口賣票,多線程

 

定義一個類Ticket實現Runnable接口,

定義成員屬性int類型的票數nums

實現run()方法,run方法中

while(true)的死循環,打印nums--

 

獲取Ticket對象,new出來

獲取Thread()對象,new出來,構造參數:Runable對象

調用Thread對象的start()方法,開啟線程

 

此時會有線程安全問題,使用synchronized同步代碼塊解決安全問題

 

避免死鎖問題,同步中嵌套同步,而鎖不同

class Ticket implements Runnable {
    private int nums = 100;

    @Override
    public void run() {

        while (true) {
            synchronized (this) {
                if (nums > 0) {
                    try {
                        Thread.sleep(10);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName() + "==="
                            + (nums--));
                }else{
                    break;
                }

            }
        }
    }

}

public class TicketDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Ticket ticket = new Ticket();
        new Thread(ticket).start();
        new Thread(ticket).start();
        new Thread(ticket).start();
        new Thread(ticket).start();
    }

}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved