Java精通并发-wait与notify方法案例剖析与详解

在上一节中对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方法来调用一下,看是否解答了这个习题:

好,看一下运行结果:

嗯~~"貌似"完美实现了,我在貌似这个字眼上加重了,很明显肯定是不完美的,具体为啥不完美,下次再继续。

原文地址:https://www.cnblogs.com/webor2006/p/11422587.html