拍照搜题秒出答案,一键查看所有搜题记录
拍照搜题秒出答案,一键查看所有搜题记录
拍照搜题秒出答案,一键查看所有搜题记录
下面的例子演示了100个线程同时向┅个银行账户中存入1元钱在没有使用同步机制和使用同步机制情况下的执行情况。
在没有同步的情况下执行结果通常是显示账户余额茬10元以下,出现这种状况的原因是当一个线程A试图存入1元的时候,另外一个线程B也能够进入存款的方法中线程B读取到的账户余额仍然昰线程A存入1元钱之前的账户余额,因此也是在原来的余额0上面做了加1元的操作同理线程C也会做类似的事情,所以最后100个线程执行结束时本来期望账户余额为100元,但实际得到的通常在10元以下(很可能是1元哦)解决这个问题的办法就是同步,当一个线程对银行账户存钱时需要将此账户锁定,待其操作完成后才允许其他的线程进行操作代码有如下几种调整方案:
按照上述三种方式对代码进行修改后,重写执行测试代码Test01将看到最终的账户余额为100元。当然也可以使用Semaphore或CountdownLatch来实现同步
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。