多线程的应用实例

r囧r小猫 2022-01-27 09:47 381阅读 0赞

一.相关知识:

Java多线程程序设计到的知识:

(一)对同一个数量进行操作

(二)对同一个对象进行操作

(三)回调方法使用

(四)线程同步,死锁问题

(五)线程通信

等等

二.示例一:三个售票窗口同时出售20张票;

程序分析:1.票数要使用同一个静态值

2.为保证不会出现卖出同一个票数,要java多线程同步锁。

设计思路:1.创建一个站台类Station,继承Thread,重写run方法,在run方法里面执行售票操作!售票要使用同步锁:即有一个站台卖这张票时,其他站台要等这张票卖完!

2.创建主方法调用类

(一)创建一个站台类,继承Thread

  1. package com.xykj.threadStation;
  2. public class Station extends Thread {
  3. // 通过构造方法给线程名字赋值
  4. public Station(String name) {
  5. super(name);// 给线程名字赋值
  6. }
  7. // 为了保持票数的一致,票数要静态
  8. static int tick = 20;
  9. // 创建一个静态钥匙
  10. static Object ob = "aa";//值是任意的
  11. // 重写run方法,实现买票操作
  12. @Override
  13. public void run() {
  14. while (tick > 0) {
  15. synchronized (ob) {// 这个很重要,必须使用一个锁,
  16. // 进去的人会把钥匙拿在手上,出来后才把钥匙拿让出来
  17. if (tick > 0) {
  18. System.out.println(getName() + "卖出了第" + tick + "张票");
  19. tick--;
  20. } else {
  21. System.out.println("票卖完了");
  22. }
  23. }
  24. try {
  25. sleep(1000);//休息一秒
  26. } catch (InterruptedException e) {
  27. e.printStackTrace();
  28. }
  29. }
  30. }
  31. }

(二)创建主方法调用类

ackage com.xykj.threadStation;

public class MainClass {
/**

  • java多线程同步锁的使用
  • 示例:三个售票窗口同时出售10张票
  • */
    public static void main(String[] args) {
    //实例化站台对象,并为每一个站台取名字
    Station station1=new Station(“窗口1”);
    Station station2=new Station(“窗口2”);
    Station station3=new Station(“窗口3”);

// 让每一个站台对象各自开始工作
station1.start();
station2.start();
station3.start();

}

}

程序运行结果:
在这里插入图片描述


作者:DreamWeaver_Zhou
来源:CSDN
原文:https://blog.csdn.net/DreamWeaver_zhou/article/details/79876064

发表评论

表情:
评论列表 (有 0 条评论,381人围观)

还没有评论,来说两句吧...

相关阅读

    相关 线实例

    场景如下 有多个品牌,每个品牌下有多个商品,现在要过滤掉其中没有商品的品牌。 除了没有商品的可能,还有用户被屏蔽的可能,因此还有一道过滤逻辑。 比如康师傅品牌下有康师

    相关 线应用实例

    一.相关知识: Java多线程程序设计到的知识: (一)对同一个数量进行操作 (二)对同一个对象进行操作 (三)回调方法使用 (四)线程同步,死锁问题 (五)线程通