`
skycity220
  • 浏览: 18663 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

派号系统----多线程学习

阅读更多
直接贴代码:觉得非常实用!
package lab_11;

import java.util.LinkedList;

public class NumStore {
    LinkedList<Integer> list = new LinkedList<Integer>();
    Integer i = 1;
    public synchronized Integer push(){
        list.add(++i);
        //必须在获得锁的情况下才能调用notifyAll和wait方法
        this.notifyAll();
        return i;
    }
    
    public synchronized Integer pop(){
        while(list.isEmpty()){
            try {
                //
                wait();//在这里阻塞了
                
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        return list.remove(0);
    }
}
package lab_11;

public class QuHao extends Thread{
    private NumStore ns ;
    private String name;
    
    public QuHao(String name,NumStore ns){
        this.name = name;
        this.ns = ns;
    }
    public void run(){
        while(true){
            System.out.println("您的号码是:"+ns.push()+",请排队等候叫号。。");
            try {
                Thread.sleep((int)(Math.random()*1000));
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
package lab_11;

//派叫号系统
public class PaiJiaoHaoSystem {

    /**
     * @param args
     */
    public static void main(String[] args) {
        NumStore ns = new NumStore();
        
        QuHao q1 = new QuHao("取号机1",ns);
        QuHao q2 = new QuHao("取号机2",ns);
        
        Window w1 = new Window("窗口1",ns);
        Window w2 = new Window("窗口2",ns);
        Window w3 = new Window("窗口3",ns);
        
        q1.start();
        q2.start();
        w1.start();
        w2.start();
        w3.start();

    }

}
分享到:
评论

相关推荐

    yolov5目标检测多线程C++部署

    ** yolov5目标检测多线程C++...总的来说,YOLOv5的C++多线程部署是一项综合了计算机视觉、深度学习、多线程编程和性能优化的复杂任务。理解这些知识点并灵活运用,能够帮助开发者构建出高效、可扩展的目标检测系统。

    MELIS 用户编程手册-内核编程指南‐多线程编程.pdf

    本手册主要针对F1C100S和荔枝派nano的SDK编程,详细介绍了如何在MELIS操作系统中进行内核级别的多线程编程。以下是核心知识点的详细说明: ### 1. 线程管理 #### 1.1. 描述 多线程编程允许在同一进程中同时执行多...

    线程-异步事件委托

    然而,当需要同时进行多个操作时,多线程技术就派上了用场。通过创建和管理多个线程,程序可以并行处理任务,提高效率,尤其是在多核处理器系统中。 异步编程是另一种提升性能的方式,它允许程序在等待某个耗时操作...

    新版Android开发教程.rar

    � 计算技术、无线接入技术的发展,使嵌入式系统逐渐有能力对桌面系统常规业务进行支持。 � 谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发 既 有用又有吸引力的移动...

    Linux 进程 线程学习笔记

    在多进程或多线程环境中,进程或线程之间需要进行通信和同步,以确保数据的一致性和程序的正确运行。Linux提供了多种机制来实现进程间通信(IPC),包括信号、管道、消息队列、共享内存和信号量等。 #### 线程管理 ...

    【树莓派步进电机】5多线程篇(笔记)插值控制法资料

    7. **学习与实践**:理解并实现这样的系统需要掌握基本的Python或MATLAB编程、树莓派GPIO编程、步进电机的工作原理以及多线程控制。通过分析提供的代码文件,你可以了解到如何在树莓派上实现多线程步进电机的插值...

    Python-从头开始系统化的学习如何写Python爬虫

    最后,了解一些网络编程和多线程知识,如使用Python的`threading`或`concurrent.futures`模块实现并发爬取,提高爬取效率。 通过以上步骤,你将能够系统地学习和掌握Python Web爬虫的基本技能。记得在实践中不断...

    java实战编程--学生成绩管理系统

    7. **多线程**:如果系统需要同时处理多个任务,如并发查询,Java的多线程技术将派上用场,可以提高程序的效率和响应速度。 8. **设计模式**:系统设计可能应用到多种设计模式,如单例模式用于数据库连接管理,工厂...

    机器学习预测天气-逻辑回归-线性回归

    在机器学习领域,预测天气是一项复杂且具有挑战性的任务,涉及到大量的数据分析和模式识别。本主题将探讨如何利用逻辑回归和线性回归这两种常见的预测模型来进行天气预报。 首先,我们来了解一下逻辑回归。逻辑回归...

    基于图像处理的水果自助售卖系统源码+项目说明+后端源码(比赛项目).zip

    程序通过多线程实现压力传感器、语音模块、post网页数据发送等功能具体实现过程是: 通过HX711压力传感模块读取水果质量, 并通过语音模块进行播放,将水果的种类、质量通过http的post请求传送到网页端, 通过网页端...

    vc++ 开发实例源码包

    实现了自绘控件,云端控制主要在CnComm类多线程串口通讯库, camerads-DirectShow使用示例 演示了摄像头的使用 CatListBoxDemo ListBox控件与其它控件阙套使用方法 CCAMS系统是一种用于局域网下的CS模式的软件...

    Laravel开发-laravel-serializer

    在Laravel框架中,序列化是一个关键的概念,它涉及到数据转换,使得数据可以在不同系统间交换,或者在存储和检索时保持一致的格式。Laravel的`laravel-serializer`库,是JMS序列化程序(Java Messaging Service ...

    QT 自助点餐系统

    6. **多线程**:为了确保系统的流畅性,可能会使用多线程技术,如QThread,将耗时操作如数据库查询或网络请求放到后台线程执行,避免阻塞主线程。 7. **支付集成**:若系统包含在线支付功能,可能需要集成第三方...

    Java学习资料&项目源码&教程,基于java的聊天系统的设计实现(7).zip

    2. **多线程**:在聊天系统中,通常会有多个并发连接,这就需要用到Java的多线程技术。每个客户端连接会创建一个独立的线程,确保同时处理多个用户的消息。你需要熟悉Thread类、Runnable接口以及Thread安全的数据...

    java学生信息系统(自己做简单的)

    7. **多线程**:在某些场景下,比如批量导入数据或后台更新,可能需要用到多线程来提高程序性能。 8. **设计模式**:合理使用设计模式(如工厂模式、单例模式、观察者模式等)可以使代码结构更加清晰,易于维护。 ...

    编程的奥妙--程序员必须学习的知识--包括物理、数学、计算机基础(内部)

    操作系统知识让我们理解进程、线程、并发和同步,这对于编写多任务或多线程程序至关重要。网络知识使我们能设计可靠的网络应用程序,理解TCP/IP协议栈和HTTP协议。数据库系统的学习则关乎数据的持久化存储和高效检索...

    校运会系统java课程设计

    5. **多线程**:在处理并发任务时,如实时更新比赛成绩或处理多个赛事,多线程技术将派上用场。学习Thread类和Runnable接口,掌握同步机制,防止数据竞争。 6. **用户界面设计**:可能采用Swing或JavaFX库来创建...

    BML百度大规模机器学习云平台实践

    - ELF框架通过分布式多线程实现,支持细粒度的线程控制,并且节点间的通信依赖于高效的baidu-rpc。 - ELF还深度优化了hashtable,专用于Parameter Server,支持多种不同的参数读取和更新方式。 8. 百度机器学习...

    java课设大作业-基于java的宠物商店系统源码.zip

    6. **多线程**:如果系统需要同时处理多个任务,比如在后台更新库存或者处理订单,多线程技术就会被用到。Java的Thread类和ExecutorService接口可以用来创建和管理线程。 7. **设计模式**:在大型项目中,设计模式...

    Java_文献管理系统_Swing

    Java提供了`java.lang.Thread`类和`java.util.concurrent`包来支持多线程编程,确保了系统的高效运行。 JNI(Java Native Interface)在Java_文献管理系统_Swing中的应用可能涉及到与本地库的交互。例如,如果文献...

Global site tag (gtag.js) - Google Analytics