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票
没有票了
没有票了

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