zoukankan      html  css  js  c++  java
  • java多线程编程实例

      【转】这篇文章主要介绍了java多线程编程实例,分享了几则多线程的实例代码,具有一定参考价值,加深多线程编程的理解还是很有帮助的,需要的朋友可以参考下。

    1.三个售票窗口同时出售20张票
    程序分析:
        (1)票数要使用同一个静态值
        (2)为保证不会出现卖出同一个票数,要java多线程同步锁。
    设计思路:
        (1)创建一个站台类Station,继承Thread,重写run方法,在run方法里面执行售票操作!售票要使用同步锁:即有一个站台卖这张票时,其他站台要等这张票卖完!
        (2)创建主方法调用类
    (一)创建一个站台类,继承Thread

    (二)创建主方法调用类

    程序运行结果:

    窗口1卖出了第20张票
    窗口2卖出了第19张票
    窗口3卖出了第18张票
    窗口3卖出了第17张票
    窗口1卖出了第16张票
    窗口2卖出了第15张票
    窗口3卖出了第14张票
    窗口1卖出了第13张票
    窗口2卖出了第12张票
    窗口2卖出了第11张票
    窗口1卖出了第10张票
    窗口3卖出了第9张票
    窗口3卖出了第8张票
    窗口1卖出了第7张票
    窗口2卖出了第6张票
    窗口3卖出了第5张票
    窗口1卖出了第4张票
    窗口2卖出了第3张票
    窗口3卖出了第2张票
    窗口1卖出了第1张票
    票卖完了
    可以看到票数是不会有错的!

    2.两个人AB通过一个账户A在柜台取钱和B在ATM机取钱!
    程序分析:
            钱的数量要设置成一个静态的变量,两个人要取的同一个对象值。
    (一)创建一个Bank类

    (二)创建一个PersonA类

    (三)创建一个PersonB类

    (四)创建主方法的调用类

    运行结果:

    可以看到取完就停止运行了。
    3.龟兔赛跑问题
    龟兔赛跑:2000米 
    要求:
        (1)兔子每 0.1 秒 5 米的速度,每跑20米休息1秒;
        (2)乌龟每 0.1 秒跑 2 米,不休息;
        (3)其中一个跑到终点后另一个不跑了!
    程序设计思路:
        (1)创建一个Animal动物类,继承Thread,编写一个running抽象方法,重写run方法,把running方法在run方法里面调用。
        (2)创建Rabbit兔子类和Tortoise乌龟类,继承动物类
        (3)两个子类重写running方法
        (4)本题的第3个要求涉及到线程回调。需要在动物类创建一个回调接口,创建一个回调对象。
    (一)创建Animal动物类

    (二)创建Rabbit兔子类

    (三)创建Tortoise乌龟类

    (四)创建一个让动物线程停止的类,这里要实现回调接口

    (五)创建一个主方法调用类

    运行结果:

     

    4. 线程示例总结

        (1)代码块锁是一个防止数据发生错误的一个重要手段;
        (2)对象的统一性是非常重要的,这要想到对象的传入问题,要操作的对象只能new一次,其他的操作都是对这个传入的对象进行的,才能保证数据一致性,完整性和正确性。
    ————————————————
    版权声明:本文为CSDN博主「延陵缥缈」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_34996727/article/details/80416277

  • 相关阅读:
    AGC002
    ICPC 北美Mid Central 2019 Regional
    【洛谷 5020】货币系统
    【洛谷 1109】学生分组
    【洛谷 2915】奶牛混合起来
    【洛谷 4162】最长距离
    【YCOJ 3805】竞选
    【洛谷 2807】最长路
    【洛谷 2918】买干草Buying Hay
    【LOJ 10172】涂抹果酱
  • 原文地址:https://www.cnblogs.com/zyzyBlog/p/12161984.html
Copyright © 2011-2022 走看看