多线程的共享资源 java提供了关键字synchronized的形式,为防止资源冲突提供内置的支持。每个对象都有一个单一的锁,这个锁是存在与对象内部的,当你调用了一个对象的某个synchronized方法,这个对象中的其他的synchronized方法必须要等到先前的那个方法执行完毕,释放了锁以后才可以被调用。一个线程可以多次获得对象的锁,JVM负责跟踪对象被加锁的次数。显然,只有首先获得了锁的线程才能允许继续获取多个锁。每当线程离开了一个synchronized方法,计数减少,直到零,锁被释放。首先,我们来看一个线程访问的冲突问题。以下是thinking in java上的一个例子。