当多个线程同时访问共同的资源并进行修改时,会产生错误,例如银行取钱的问题: 新建一个Acount.java,用来封装银行账户和余额,代码如下: 在新建一个FirstThread.java,用来表示当前线程: 运行结果,账户余额会出现负数,很明显,当其中一个线程取钱时,另一个线程也同时取钱,运行结果如下: 这时应对账户acount进行加锁,即使用synchronized关键字,对其进行加锁后,当有线程访问时,会获得锁,并对其资源进行修改操作,其他的线程只有当该线程修改完成后并且释放锁,才能对其访问,这种加锁--修改--释放锁的模式就解决了多个线程同时修改资源而造成的错误。 在FristThread.java上图的代码中,把11行和27行注释去掉即可,其运行结果为: