zoukankan      html  css  js  c++  java
  • 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方法来调用一下,看是否解答了这个习题:

    好,看一下运行结果:

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

  • 相关阅读:
    redis报Cannot allocate memory错误
    Python输入输出
    leedcode题目 :罗马数字转整数 Java
    form 表单中input 使用disable属性
    今天开始学习
    equals的用法的注意事项
    mybatis的优缺点
    安装oracle出现环境不满足最低要求
    史上最形象易懂的java代理
    MySQL中光标的使用细节
  • 原文地址:https://www.cnblogs.com/webor2006/p/11422587.html
Copyright © 2011-2022 走看看