//线程同步问题 public class TestThread implements Runnable{ Timer timer = new Timer(); public static void main(String[] args) { TestThread test = new TestThread(); Thread t1 = new Thread(test); Thread t2 = new Thread(test); t1.setName("t1"); t2.setName("t2"); t1.start(); t2.start(); } public void run() { timer.add(Thread.currentThread().getName()); } } class Timer { private static int num = 0; public void add(String name) { num ++; try { Thread.sleep(1);// ---放大效果 } catch(InterruptedException e) {} System.out.println// 可能被打断 (name + ", 你是第" + num + "个使用timer的线程"); } } //以下3个类相同,【运行结果】为第一个类的结果,请注释其他2个相同的类 //2,3两个类主要介绍synchronized 的使用方式 class Timer { private static int num = 0; public void add(String name) { synchronized(this) { //锁定代码段 num ++; try { Thread.sleep(1);// ---放大效果 } catch(InterruptedException e) {} System.out.println// 可能被打断 (name + ", 你是第" + num + "个使用timer的线程"); } } } class Timer { private static int num = 0; public synchronized void add(String name) {//锁定过程 num ++; try { Thread.sleep(1);// ---放大效果 } catch(InterruptedException e) {} System.out.println// 可能被打断 (name + ", 你是第" + num + "个使用timer的线程"); } } /* 运行结果 --------------------Configuration: <Default>-------------------- t1, 你是第2个使用timer的线程 t2, 你是第2个使用timer的线程 Process completed. */