See More

/* * ¹¦ÄÜ£º²âÊÔ¶àỊ̈߳¬ÊÛÆ±£¬Ḭ̈߳²È«ÎÊÌ⣬ͨ¹ýsynchronized (Object)¶ÔÏóËøÊµÏÖḬ̈߳²È«Í¬²½ */ package com.bj.thread; /* * ¹¦ÄÜ£ºÄ£Äâ¶à¸ö´°¿ÚȡƱ£¬Ñé֤ȡƱÊÇ·ñ»á³öÏÖḬ̈߳²È«ÎÊÌâ */ import javax.swing.plaf.synth.SynthSpinnerUI; public class TicketThread { public static void main(String[] args) { // TODO Auto-generated method stub //¶¨ÒåÈý¸ö´°¿Ú TicketWindow tw1=new TicketWindow(); //TicketWindow tw2=new TicketWindow(); //TicketWindow tw3=new TicketWindow(); Thread t1=new Thread(tw1); Thread t2=new Thread(tw1); Thread t3=new Thread(tw1); t1.start(); t2.start(); t3.start(); } } //ÊÛÆ±´°¿Ú class TicketWindow implements Runnable{ //ƱÊý private int nums=2000; //private DogI di=new DogI(); public void run(){ while(true){ //³öƱËÙ¶È,1sÒ»ÕÅ try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } //ÈÏΪif else Òª±£Ö¤ÆäÔ­×ÓÐÔ,¼Ó¶ÔÏóËø£¬±£Ö¤ËøÄÚͬ²½´úÂë½øÐÐ synchronized (this) { //ÏÈÅжÏÊÇ·ñ»¹ÓÐÆ± if(nums>0){ System.out.println(Thread.currentThread().getName()+"ÔÚÊÛ³öµÚ"+(nums)+"Ʊ"); nums--; }else{ //ÊÛÆ±½áÊø break; } } } } } class DogI{ public DogI(){ System.out.println("Dog"); } }