ring args[]) { PrintMessage PM = new PrintMessage(); Thread t1=new Thread(PM); Thread t2=new Thread(PM); Thread t3=new Thread(PM) ; t1.setName("这是消息 1"); t2.setName("这是消息 2"); t3.setName("这是消息 3"); t1.start(); t2.start(); t3.start(); } } class PrintMessage implements Runnable{ String msg=""; public synchronized void run() { System.out.println(Thread.currentThread().getName()); try { Thread.sleep(1000); } catch (InterruptedException e) {} System.out.println("消息结束"); } }
6
//修改书上例题 10-4 修改书上例题 //用同步方法实现 用同步方法实现 public class ThreadSyncDemo1 { public static void main(String[] args) { ThreadTest1 t=new ThreadTest1(); new Thread(t,"售票窗口 1 ").start();//本线程调用同步代码块 new Thread(t,"售票窗口 2 ").start()
;//本线程调用同步函数 } } class ThreadTest1 implements Runnable{ private int tickets=100; public void run() { while ( true ) { sale(); } } public synchronized void sale() { if ( tickets > 0 ) { try { Thread.sleep(10); } catch(Exception e){System.out.println(e.getMessage());} System.out.println(Thread.currentThread().getName()+"正 在 卖第 "+tickets--+"号 票 "); } } }//end class ThreadTest1
//修改书上例题 10-4 修改书上例题 //用同步代码块实现 用同步代码块实现 public class ThreadSyncDemo2 { public static void main(String[] args) { ThreadTest2 t=new ThreadTest2(); new Thread(t,"售票窗口 1 ").start(); new Thread(t,"售票窗口 2 ").start(); } } class ThreadTest2 implements Runnable{
7
private int tickets=100; public void run() { while ( true ) { sale(); } } public void sale() { synchronized ( this ) { if ( tickets > 0 ) { System.out.println(Thread.currentThread().getName()+"正在卖第"+tickets+"号票 "); try { Thread.sleep( 10 ); } catch(Exception e){System.out.println(e.getMessage());} tickets--; } }//synchronized } }//end class ThreadTest2
8