多线程通信经典问题:存取钱问题

几天前在看到多线程通信问题的时候,觉得还挺头疼的,后来就画了一张图,之后就只能慢慢理解了.
这道题是这么规定的:两人,一人负责存款,一人负责取款;每次只要一存款就必须把钱取走;不能存钱两次,也不能取钱两次.

据分析,这个问题里面需要以下部分:

  1. 判断账户里面是否可以存钱(账户为空);
  2. 需要判断账户是否可以取钱;
  3. 之后需要判断一些余额什么的.

因此得出:

  • 对于存钱以及取钱的判断可以使用一个boolean变量来完成.
  • 由于多线程环境本身的不确定性,因此需要使用synchronized对存取钱方法进行同步.
  • *:给予money(钱,用于记录余额)一个get方法,但不用给予set方法.

如果没看明白上面的文字描述,可以看下面的图:

多线程通信经典问题
image-1760

懒得说了,直接甩源代码把,这个是我昨晚写的,大家可以适当进行改写,主要是理解里面的思想就行.

一个有关“多线程通信经典问题:存取钱问题”的想法

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据