package Thread; //synchronized(同步监视器){ // 需要被同步的代码 //} class Window3 implements Runnable{ private int ticket = 100; Object obj = new Object(); @Override public void run() { while(true){ //this也可以作为对象 synchronized(obj){ if(ticket > 0){ try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + ":卖票,票号为:" + ticket); ticket--; }else{ break; } } } } } public class WindowTest3 { public static void main(String[] args) { Window3 w = new Window3(); Thread t1 = new Thread(w); Thread t2 = new Thread(w); Thread t3 = new Thread(w); t1.setName("窗口1"); t2.setName("窗口2"); t3.setName("窗口3"); t1.start(); t2.start(); t3.start(); } }