之前写过使用synchronized实现多线程同步,今天说说怎么使用ReentrantLock实现多线程同步。
工具/原料
Eclipse、STS
方法/步骤
1
如下图:账户类,默认余额100元,取走100元,那么最终余额应该是0元。
2
妻子和丈夫分别来取钱,那么如果其中一人取走100元,另一个应该就没法取钱了,因为余额为0了。
3
运行上面main方法,查看结果,很明显,出问题了,余额变成-100了。这就是多线程造成的问题。
4
下面使用ReentrantLock来解决。注意标红的代码,在取钱操作之前加锁lock,在取钱操作之后释放锁unlock。
5
再次运行main方法,发现结果正确。
注意事项
ReentrantLock较sychronized更高级,建议使用。
下一篇:linux下安装jdk