`
skycity220
  • 浏览: 18243 次
  • 性别: 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的命令环境来...

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

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

    FTP实验报告.docx

    FTP实验报告全文共2页,当前为第1页。... 实验总结 通过本次试验,我理解了整个FTP协议的细节和工作流程,对Linux系统下Socket编程的过程有了较多的了解,为以后网络编程的学习打下了良好的基础。 FTP实验报告

    二十三种设计模式【PDF版】

    为能和大家能共同探讨"设计模式",我将自己在学习中的心得写下来,只是想帮助更多人更容易理解 GoF 的《设计模式》。由 于原著都是以C++为例, 以Java为例的设计模式基本又都以图形应用为例,而我们更关心Java在中间件等...

    疯狂JAVA讲义

    学生提问:老师,我想学习Java编程,到底是学习Eclipse好呢,还是学习JBuilder好呢? 21 1.9 本章小结 22 本章练习 22 第2章 理解面向对象 23 2.1 面向对象 24 2.1.1 结构化程序设计简介 24 2.1.2 程序的三种...

Global site tag (gtag.js) - Google Analytics