j2me的利用線程實現賣票機制

import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class Midlet5 extends MIDlet {

 protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
  // TODO Auto-generated method stub

 }

 protected void pauseApp() {
  // TODO Auto-generated method stub

 }

 protected void startApp() throws MIDletStateChangeException {

  TickerThread th = new TickerThread();
  Thread t1 = new Thread(th);
  Thread t2 = new Thread(th);
  t1.start();
  t2.start();

 }

 class TickerThread implements Runnable {
  private int tickerNum = 10;

  public void run() {

   while (true) {
    synchronized (this) {//實現線程同步,如果這代碼沒有被運行完,另一個線程就不強用這段代碼
     if (tickerNum <= 0) {
      System.out.println("沒有票了");
      break;
     } else {
      try {
       Thread.currentThread().sleep(1000);
      } catch (Exception e) {

      }
      tickerNum--;
      System.out.println(Thread.currentThread().getName()
        + "賣出了一張票,還剩下" + tickerNum + "票");
     }
    }

   }

  }

 }

}

 

運行後控制檯輸出:

Thread-6賣出了一張票,還剩下9票
Thread-7賣出了一張票,還剩下8票
Thread-6賣出了一張票,還剩下7票
Thread-7賣出了一張票,還剩下6票
Thread-6賣出了一張票,還剩下5票
Thread-7賣出了一張票,還剩下4票
Thread-6賣出了一張票,還剩下3票
Thread-7賣出了一張票,還剩下2票
Thread-6賣出了一張票,還剩下1票
Thread-7賣出了一張票,還剩下0票
沒有票了
沒有票了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章