`
skycity220
  • 浏览: 18367 次
  • 性别: 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();

    }

}
分享到:
评论

相关推荐

    新版Android开发教程.rar

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

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

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

    vc++ 开发实例源码包

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

    基于图像处理实现的水果自助售卖系统源代码+项目说明+后端源码(比赛项目)+博客介绍+演示视频

    基于图像处理的水果自助售卖系统(研究生电赛) 通过CT-LO200 USB2.0 2MP摄像头进行图像采集,将采集到的图片传到AM5708的工业派中, 通过opencv模块对图像进行处理,识别到水果种类后,传递到全局变量中, 程序通过多...

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

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

    vc++ 应用源码包_1

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

    vc++ 应用源码包_2

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

    vc++ 应用源码包_3

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

    vc++ 应用源码包_6

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

    vc++ 应用源码包_5

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

    Python在Unix和Linux系统管理中的应用

    ·使用线程和派生子进程的选项并发地运行多个任务 ·使用网络工具从一个进程传送信息到另一个进程 ·创建更易互动的可点击图形界面工具 ·通过与SNMP交互来用程序监控大型多个集群机器 ·掌握IPython的命令环境来...

    java实习周记.docx

    作者也学习了线程的生命周期、start()方法和run()方法,并了解到多线程的概念。作者还学习了I/O的概念,即在JVM和外部数据源之间交换数据,并了解到输入流和输出流、字节流和字符流、过滤流等。 第五周实习 在第五...

    分布式系统2019年期末考点1

    分布式系统是多个计算机通过网络协同工作,以提供单一的整体服务的计算模型。这些系统的特点包括:分布性、透明性、并发性、容错性、可扩展性和资源共享。透明性主要体现在位置透明性、复制透明性、移动透明性和失败...

    java实习周记25篇.docx

    3. 多线程:多线程可以提高程序执行效率,线程间通信需注意同步和锁机制,如synchronized关键字。 4. 输入输出流:Java的IO体系,分为字节流和字符流,以及过滤流(如BufferedReader、BufferedWriter)用于增强节点...

    【RT-Thread作品秀】车内二氧化碳检测仪-电路方案

    我之前也用过RT-Thread系统,不过都是基于WIFI模块二次开发,本次是第一次使用RT-Thread开发STM32,项目,RT-Thread丰富的文档视频资料是我学习过程中的极大助力,通过RT-Thread + CubMX极大的提高了开发效率,由衷的...

    linuxOperratingSystemCleading

    `gcc`允许我们在编译时通过`-l`选项指定需要链接的库,例如`-lm`链接数学库,`-lpthread`链接多线程库。 4. **头文件和系统求助** 头文件(如`.h`文件)包含了函数原型、宏定义和其他声明。在C语言中,`#include`...

    java实习周记

    本 Java 实习周记记录了作者在 Java 实习期间的学习经验和总结,涵盖了 Java 基础知识、Java 高级语法、Java 线程和 Collection 框架等方面的知识点。 一、Java 基础知识 * 类之间的关系:关联、聚合、继承、...

    Linux C程序设计入门

    使用`&lt;pthread.h&gt;`头文件,可以在C程序中创建和管理线程,实现多线程并发执行。 12. **网络编程** 网络编程涉及套接字(socket)操作,`&lt;sys/socket.h&gt;`头文件提供了创建、连接、监听、发送和接收数据的接口。 ...

    java实习周记25篇借鉴.pdf

    在第五周,作者使用Collection框架来实现一个派叫号系统,包括产品参与者、功能需求和系统设计等。 本文档涵盖了Java语言的基础知识和高级应用,以及实习过程中的经验和体会。作者通过实习,逐渐熟悉了Java语言和...

Global site tag (gtag.js) - Google Analytics