引入:两人同时取同一账户的钱 两个线程访问同一资源,进程之间协调的问题
解决:在进程访问独占资源时先锁定再访问 synchronized 最好只锁定一个对象
加锁过程中:一个方法做了同步(加锁)另一个方法没有做同步,别的线程可以访问没做同步的方法,并且能影响已经同步的方法,要保护需要的同步的对象,必须对要访问的对象所有方法要仔细考虑加不加同步,加同步效率变低,不加同步有可能产生数据不一致的后果
读写两方法,写的方法加锁。
两个方法都改了同一个值,两个方法都应该加同步

t2,你是第1个使用timer的线程
t1,你是第2个使用timer的线程
改掉其中一段代码
class Timer{ private static int num = 0; //改成1, 输出会出现3 public void add(String name){ synchronized(this){ //锁,就可以把上面的 num成员变量给锁住 num ++; try{ Thread.sleep(1); }catch (InterruptedException e) {} System.out.println(name+",你是第" + num +"个使用timer的线程"); } } }就可以输出:
t1,你是第1个使用timer的线程
t2,你是第2个使用timer的线程