在上一节中对Object的wait、notify、notifyAll方法进行了总结,这次举一个具体案例来进行巩固,题目如下:
编写一个多线程程序,实现这样的一个目标:
1、存在一个对象,该对象有一个int类型的成员变量counter,该成员变量的初始值为0。
2、创建两个线程,其中一个线程对该对象的成员变量counter增1,另一个线程对该对象的成员变量减1。
3、输出该对象成员变量counter每次变化后的值。
4、最终输出的结果应为:101010101010。。。。
分析:
1、会创建两个线程。
2、有一个对象,里面有一个int类型的counter成员。
3、对象里面有两个方法,一个方法是对成员变量counter++,一个方法是对成员变量counter--。
4、需要对方法进行线程同步处理,不进行同步不可能达到交替执行的。
5、会有线程之间的通讯手段,也就是肯定会有notify()、wait()相关的控制,也就是正好可以实践一下这俩方法的作用。
开撸:
先新建一个对象类:
然后再定义两个成员方法,先定义增加方法:
类似的,再定义另一个减操作:
好,接下来定义两个线程:
类似的,再定义一个减操作的线程:
好,一切就绪,接下来就定义一个main方法来调用一下,看是否解答了这个习题:
好,看一下运行结果:
嗯~~"貌似"完美实现了,我在貌似这个字眼上加重了,很明显肯定是不完美的,具体为啥不完美,下次再继续。