多语言展示
当前在线:780今日阅读:176今日分享:34

使用ReentrantLock实现多线程同步

之前写过使用synchronized实现多线程同步,今天说说怎么使用ReentrantLock实现多线程同步。
工具/原料

Eclipse、STS

方法/步骤
1

如下图:账户类,默认余额100元,取走100元,那么最终余额应该是0元。

2

妻子和丈夫分别来取钱,那么如果其中一人取走100元,另一个应该就没法取钱了,因为余额为0了。

3

运行上面main方法,查看结果,很明显,出问题了,余额变成-100了。这就是多线程造成的问题。

4

下面使用ReentrantLock来解决。注意标红的代码,在取钱操作之前加锁lock,在取钱操作之后释放锁unlock。

5

再次运行main方法,发现结果正确。

注意事项

ReentrantLock较sychronized更高级,建议使用。

推荐信息