精华内容
下载资源
问答
  • 定义:所谓安全控制系统,指的是能提供一种高度可靠的安全保护手段系统,可以最大限度地避免相关设备安全状态,防止恶性事故发生或在事故发生后尽可能地减少损失,保护生产装置及最重要人身安全 2、安全...

    1、安全控制系统的定义
    定义:所谓安全控制系统,指的是能提供一种高度可靠的安全保护手段的系统,可以最大限度地避免相关设备的不安全状态,防止恶性事故的发生或在事故发生后尽可能地减少损失,保护生产装置及最重要的人身安全
    2、安全控制系统的作用
    安全控制系统能在生产装置启动、停止、出现工艺扰动等状况和正常维护操作期间对设备提供安全保护,一旦设备出现危险情况,安全控制系统能够立即做出反应并输出正确信号,使得设备处于安全状态或停机。
    3、安全标准的结构有哪些
    机械领域安全标准的结构如下: —A类标准(基础安全标准),给出适用于所有机械的基本概念、设计原则和一般特征。 —B类标准(通用安全标准),涉及在机械的一种安全特征或使用范围较宽的一类安全装置: B1类,特定的安全特征(如安全距离、表面温度、噪声)标准; B2类,安全装置(如双手操纵装置、联锁装置、压敏装置、防护装置)标准。 —C类标准(机器安全标准).对一种特定的机器或一组机器规定出详细的安全要求的标准。
    国家安全标准部分列表
    在这里插入图片描述
    4、安全控制器有什么特点
    .自我检测 安全控制器随时进行自身的诊断与检测。这种检测有时是通过自身信息进行检测的,我们称之为自检。有时是通过对方的信息经行检测,我们称之为互检 . CPU冗余 安全控制器一般有2个或以上的CPU,2个或以上CPU的功能是分别对同一个用户程序各自执行一次。 .结果比较 首先2个或以上CPU会分别对同一个用户程序各自执行一次。然后再把结果进行比较,如果结果一致则输出。如果结果不一致,则选择安全的结果输出。
    5、SR602概述
    SM-602是一款具有MODBUS通讯功能的可组态安全控制模块,支持多种开关型安全元件输入(如急停按钮,安全门,双手按钮等),最大支持6路安全元件输入,2路继电器安全输出,4路半导体安全输出,可利用组态软件,设定安全控制逻辑,满足多种现场应用需求。
    在这里插入图片描述
    6、应用场合
    工业制造行业
    橡塑行业
    钢铁行业
    汽车行业机床行业
    电力行业
    玻璃制造行业
    包装行
    地铁行业
    电子制造行业
    制药行业应用
    6.1 橡塑行业的应用
    .在橡胶和塑料机器中,存在许多会对操作人员或维修人员造成致命伤害的危险性。在轮胎制造机器中快速移动的部件,如移动环,卸胎器,供料架等都会对操作和维修的人造成撞击伤害。在注塑机中,模板会对操作人员和维修人员造成挤压伤害。如果出现事故带给生产厂家的不仅仅是工商赔偿的损失,而是产品产量和工人对行业的恐惧所造成的巨大潜在威胁,所以,必须采用安全装置来减少或避免该类机器中的风险
    6.2 钢铁行业的应用
    对于钢铁行业中控制区域分散的特点,也可是使用NJ系列安全总在钢铁行业不管事冷轧,平整生产线,还是整卷刚钢板的开卷,剪裁,再卷等生产过程,都存在着导致对操作人员和维修人员的伤害的风险。同时,在生产过程中突发的意外情况也会对机器和设备造成严重的损毁,所以我们应采取紧急停止设备来停止机器的非正常运转,以减少事故损失和操作维修人员的安全。必须通过安装安全门、安全地毯、使用紧急停止按钮来保护操作和维修人员。必须使用安全控制器件,如SR602安全继电器,可靠的控制这些安全装置。同时线系统和SL3300安全可编程控制系统对这些安全装置进行最可靠的安全控制,以免控制回路造成安全功能的丢失。当操作维修人员进入危险区域或机器设备出项危险工况时,所有危险动作将被终止。
    8、SR602安全控制器编程
    在这里插入图片描述

    展开全文
  •  三、术语和定义 3.1安全生产责任制 安全生产责任制企业一项基本管理制度,主要企业各岗位人员对安全生产所负责工作和应承担责任一种制度(以下简称“责任制”)。 3.2到位标准 在本制度中,在...
  •  三、术语和定义 3.1 安全生产责任制 安全生产责任制企业一项基本管理制度,主要企业各岗位人员对安全生产所负责工作和应承担责任一种制度 (以下简称“责任制”) 。 3.2 到位标准 在本制度中,.....
  • 安全生产事故隐患是指生产经营单位违反安全生产法律、法规、规章、标准、规程和安全生产管理制度规定,或者因其他因素在生产经营活动中存在可能导致事故发生危险状态、人不安全行为和管理上缺陷。...
  •  安管员是指负责公司安全管理工作人员。  二、安管员岗位职责:  1、负责公司门禁管理 ,维护出入秩序;  2、对携带危险或异常物品出入公司情况予以制止;  3、维护公司正常秩序,对扰乱秩序行为予以...
  • 1)电子元件:指在工厂生产加工时不改变分子成分成品。如电阻器、电容器、电感器... 3)电子仪器:是指检测、分析、测试电子产品性能、质量、安全的装置。大体可以概括为电子测量仪器、电子分析仪器和应用仪器三大块
  •  电力二次系统作为电网公司重要生产系统,长期受到极大关注,电监会按照安全分区、网络专用、横向隔离、纵向认证思路,将电力网络划分为一区、二区、三区和四区,其中一区为生产实时控制大区,二区为生产非实
  • 加强建设工程施工现场安全生产的管理,保障建设工程顺利进行,促进安全生产、文明施工,遵循平等、自愿、公平和诚实信用的原则,乙方承包本合同项下甲方的工程,甲乙双方就安全生产事项经协商一致,订立本合同。...
  •  首先从食品安全和食品添加剂的定义了解,所谓食品安全主要是指食品及其生产经营和消费等活动不存在对人体健康现实的或潜在的损害。而食品添加剂是指用于改善食品品质、延长食品保存期、便于食品加工和增?..
  • 根据世界卫生组织的定义,食品安全是“食物中有毒、有害物质对人体健康影响的公共卫生问题”。食品安全一门专门探讨在食品加工、存储、销售等过程中确保食品卫生及食用安全,降低疾病隐患,防范食物中毒的一个跨...
  • 定义多线程环境下,只要有并发问题,就要保证数据的安全性,一般指的是通过 synchronized 来进行同步。另一个问题, 多个线程之间如何协作呢 ?我们看一个仓库出货问题(更具体一些,快餐店直接放好炸货架子,...

    d3a2fb75dac815248f9f4c07df0cca00.png

    76cd07191e9b1b5f4478f443bb6a3d3e.png

    一、背景 && 定义

    多线程环境下,只要有并发问题,就要保证数据的安全性,一般指的是通过 synchronized 来进行同步。

    另一个问题是, 多个线程之间如何协作呢

    我们看一个仓库出货问题(更具体一些,快餐店直接放好炸货的架子,不过每次只放一份)

    1. 假设仓库中只能存放一件商品,生产者将生产出来的产品放入仓库,消费者将仓库中产品取走进行消费;
    2. 如果仓库中没有商品,那么生产者将产品放入仓库,否则停止生产并等待,直到仓库中的产品被消费者取走为止;
    3. 如果仓库中放有产品,消费者可快速取走并消费,否则停止消费并等待,直到仓库中再次放入产品为止。

    这其实就是一个线程同步问题。 生产者和消费者共享同一个资源,并且生产者和消费者之间互相依赖,互为条件。

    如果一个快餐店:

    先点单,餐出来之后再收钱。这种模式叫BIO-阻塞IO模式。

    如果一个快餐店:

    先收钱,收完钱消费者在旁边等。这种就是生产者-消费者模式。

    这类问题里,同步的候只有 synchronized 是不够的,因为他虽然能解决资源的共享问题,实现资源的同步更新,但是无法 在不同线程之间进行消息传递 (通信)。

    所以只有我们之前所说的 加锁排队 是不够的,还要有 通知

    定义:

    生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。

    为了解决双方能力不等而等待的问题,引入对应的解决方案。生产者消费者模型是一种并发协作模型。

    二、解决方式介绍

    2.1 管程法

    1. 生产者 :负责生产数据的模块(模块可能是方法、对象、线程、进程);
    2. 消费者 :负责处理数据的模块(模块可能是方法、对象、线程、进程);
    3. 缓冲区 :消费者不能直接使用生产者的数据,它们之间有个“缓冲区”(缓冲区一般是队列)。

    生产者和消费者都是通过缓冲区进行数据的 放 和 那 。

    这样的话,一来可以避免旱的旱死,涝的涝死的问题:不管哪一方过快或者过慢,缓冲区始终有一部分数据;二来能够达到生产者和消费者的解耦,不再直接通信,从而提高效率。

    因为容器相当于一个输送商品的管道,所以成为 管程法

    2.2 信号灯法

    采用类似红灯绿灯的模式,决定车走还是人走。

    • 管程法使用容器的状态来控制,数据在容器中;
    • 而信号灯法只是用信号来给生产者和消费者提醒,他们的交互数据并不由信号灯来保管。

    2.3 Object类

    jdk 里面 Object 类老早就有提供解决线程间通信的问题的方法:

    1. wait() :表示线程一直等待,直到其他线程通知(也就是调用了notify或者notifyAll方法),与sleep不同,会释放锁;
    2. wait(long timeout) :指定时间;
    3. notify() :唤醒一个处于等待状态的线程;
    4. notifyAll() :唤醒同一个对象上所有调用 wait() 方法的线程,优先级别高的线程优先调度。

    这几个方法都是在 同步方法或者同步代码块 中使用,否则会抛出异常。

    (很多面试题问 Java 的 Object 类有哪些方法,都是希望得到关于这块的答案,引导多线程)

    三、管程法实现

    管程法实现的四个角色:

    1. 生产者和消费者都是多线程;
    2. 中间的缓冲区应该是一个容器,并且需要的是一个 并发容器 ,java.util.concurrent包里面已经提供了;
    3. 资源,也就是各个角色来回交换的商品。

    利用 Object 类的几个方法,来实现管程法,以下是代码示例:

    /**
    * 协作模型:生产者消费者模型实现:管程法
    */
    public class Cooperation1 {
        public static void main(String[] args) {
            Container container = new Container();
            new Producer(container).start();
            new Consumer(container).start();
        }
    }
    
    /**
    * 生产者
    */
    class Producer extends Thread{
        Container container;
        public Producer(Container container){
            this.container = container;
        }
        @Override
        public void run() {
            //生产过程
            for (int i=0; i<10; i++){
                System.out.println("生产第 " + i + " 个馒头");
                container.push(new Hamburger(i));
            }
        }
    }
    
    /**
    * 消费者
    */
    class Consumer extends Thread{
        Container container;
        public Consumer(Container container){
            this.container = container;
        }
        @Override
        public void run() {
            //消费过程
            for (int i=0; i<10; i++){
                System.out.println("消费第 " + container.pop().id + " 个馒头");
            }
        }
    }
    
    /**
    * 缓冲区,操作商品,并和生产者、消费者交互
    */
    class Container{
        Hamburger[] food = new Hamburger[10];
        private int count = 0;
        //存储:生产
        public synchronized void push(Hamburger hamburger){
            if (count == food.length){
                try {
                    this.wait();//阻塞,但是等待消费者通知后会解除
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            food[count++] = hamburger;
            this.notifyAll();//说明存在数据了,通知消费者消费
        }
        //获取:消费
        public synchronized Hamburger pop(){
            if (count ==0 ){
                try {
                    this.wait();//阻塞,直到生产者通知后会解除
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            Hamburger ans = food[--count];
            this.notifyAll();//存在空余空间了,通知生产者生产
            return ans;
        }
    }
    
    /**
    * 商品
    */
    class Hamburger{
        int id;
        public Hamburger(int id) {
            this.id = id;
        }
    }

    其中的核心有这么几点:

    1. 容器相当于一个栈,是后进先出的;
    2. 容器的两个方法对于资源的操作,一个和生产者交互,一个和消费者交互,除了 synchronized 修饰,因为两个方法是互斥的,所以利用 wait 和 notify 方法使他们完成阻塞和解除阻塞;
    3. 生产者和容器交互,添加数据;
    4. 消费者和容器交互,删除数据。

    前面关于 线程的阻塞问题,生命周期里的阻塞 ,完整的可能情况,就包含这里的阻塞情况:

    6a01fcf454c64214b4ba3e7a07db63ad.png

    四、信号灯法实现

    和上一种通过容器的容量让线程之间互相通知的方法不同,信号灯法没有用数据缓存的方式,而是用 信号灯来指示双方 ,对方是否已经准备好了要和你通信。

    下面是一个 电视直播和观众的代码示例,通过信号灯,通知演员和观众直播,确保演员在演的时候,让观众来看。

    /**
    * 协作模型:生产者消费者实现:信号灯法
    */
    public class Cooperation2 {
        public static void main(String[] args) {
            TV tv = new TV();
            new Actor(tv).start();
            new Fans(tv).start();
        }
    }
    /**
    * 生产者:演员
    */
    class Actor extends Thread{
        TV tv;
        public Actor(TV tv){
            this.tv = tv;
        }
        @Override
        public void run() {
            for (int i=0; i<10; i++){
                if (i%2 == 0){
                    this.tv.play("节目 " + i);
                }else{
                    this.tv.play("广告 " + i);
                }
            }
        }
    }
    /**
    * 消费者:观众
    */
    class Fans extends Thread{
        TV tv;
        public Fans(TV tv){
            this.tv = tv;
        }
        @Override
        public void run() {
            for (int i=0; i<10; i++){
                tv.watch();
            }
        }
    }
    
    /**
    * 共同资源:电视直播
    */
    class TV{
        String voice;
        //信号灯,如果为真则演员准备,观众等待
        //如果为假,则观众就位,演员等待
        boolean flag = true;
    
        //表演方法:针对生产者
        public synchronized void play(String voice){
            //演员等待
            if (!flag){
                try {
                    this.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            this.voice = voice;
            System.out.println("表演 "+voice +" ing");
            //唤醒观众
            this.notifyAll();
            this.flag = !flag;
        }
    
        //观看方法:针对消费者
        public synchronized void watch(){
            //观众等待
            if (flag){
                try {
                    this.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("观看 " + voice +" ing");
            this.notifyAll();
            this.flag = !flag;
        }
    }

    可以看到,相比管程法的核心区别是:

    TV 没有用一个容器存储数据 ,只是通过生产者是否生产,来决定 信号灯 的标志,以此 通知消费者来消费。

    显然这两种实现方法,有不同的适用场景,那就是决定于生产者消费者是否有数据沟通。

    展开全文
  • 1、高速公路 “能适应年平均昼夜小客车交通量为25000辆以上,专供汽车分道高速行驶并全部控制出入公路”。一般能适应80公里/小时或者更高速度,要求路线顺畅,纵坡平缓,路面有4个以上车道...其生产方式...

     

    1、高速公路

    指“能适应年平均昼夜小客车交通量为25000辆以上,专供汽车分道高速行驶并全部控制出入的公路”。一般能适应80公里/小时或者更高的速度,要求路线顺畅,纵坡平缓,路面有4个以上车道的宽度。中间设置分隔带,采用沥青混凝土或水泥混凝土高级路面,为保证行车安全设有齐全的标志、标线、信号及照明装置;禁止行人和非机动车在路上行走,与其他线路采用立体交叉、行人跨线桥或地道通过。其生产方式是为车辆高速通行提供各项安全保证,服务支持。

    2、突发环境事件

    指由于违反环境保护法律法规的经济、社会活动与行为,以及意外因素的影响或自然灾害等原因致使环境受到污染,人体健康受到危害,社会经济与人民财产受到损失,造成不良社会影响的突发性事件。

    3、危险化学品

    指属于爆炸品、压缩气体和液化气体、易燃液体、易燃固体、自燃物品和遇湿易燃物品、氧化剂和有机过氧化物、有毒品和腐蚀品的化学品。

    4、危险废物

    指列入国家危险废物名录或者根据国家规定的危险废物鉴别标准和鉴别方法认定的具有危险特性的废物。

    5、环境风险源

    指可能发生突发环境事件并对周边环境造成危害的环境因素,环境风险源的危险程度由所涉及的危险物质的特性(物质危险性和物质的量)、危险物质存在的安全状态、所处的周边环境状况三个要素决定。

    6、应急处置

    指在发生突发环境事件时,采取的消除、减少事件危害和防止事态恶化,最大限度降低环境影响的措施。

    7、预案

    根据预测可能发生突发环境事件的类别、环境危害的性质和程度,而制定的应急处置方案。

    8、分级

    按照突发环境事件的严重性、紧急程度及危害程度划分的级别。

    9、应急监测

    在发生突发环境事件的情况下,为发现和查明环境污染情况和污染范围而进行的环境监测。包括定点监测和动态监测。

    10、应急演习

    为检验应急预案的有效性、应急准备的完善性、应急响应能力的适应性和应急人员的协同性而进行的一种模拟应急响应的实践活动,根据所涉及的内容和范围的不同,可分为单项演习(演练)、综合演习和指挥中心、现场应急组织联合进行的联合。

    展开全文
  • 多线程环境下,只要有并发问题,就要保证数据的安全性,一般指的是通过 synchronized 来进行同步。 另一个问题,多个线程之间如何协作呢? 我们看一个仓库出货问题(更具体一些,快餐店直接放好炸货架子,不过...

    Java多线程:线程间通信—生产者消费者模型

     

    一、背景 && 定义

    多线程环境下,只要有并发问题,就要保证数据的安全性,一般指的是通过 synchronized 来进行同步。

    另一个问题是, 多个线程之间如何协作呢 ?

    我们看一个仓库出货问题(更具体一些,快餐店直接放好炸货的架子,不过每次只放一份)

    1. 假设仓库中只能存放一件商品,生产者将生产出来的产品放入仓库,消费者将仓库中产品取走进行消费;
    2. 如果仓库中没有商品,那么生产者将产品放入仓库,否则停止生产并等待,直到仓库中的产品被消费者取走为止;
    3. 如果仓库中放有产品,消费者可快速取走并消费,否则停止消费并等待,直到仓库中再次放入产品为止。

    这其实就是一个线程同步问题。 生产者和消费者共享同一个资源,并且生产者和消费者之间互相依赖,互为条件。

    如果一个快餐店:

    先点单,餐出来之后再收钱。这种模式叫BIO-阻塞IO模式。

    如果一个快餐店:

    先收钱,收完钱消费者在旁边等。这种就是生产者-消费者模式。

    这类问题里,同步的候只有 synchronized 是不够的,因为他虽然能解决资源的共享问题,实现资源的同步更新,但是无法 在不同线程之间进行消息传递 (通信)。

    所以只有我们之前所说的 加锁 和 排队 是不够的,还要有 通知 。

    定义:

    生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。

    为了解决双方能力不等而等待的问题,引入对应的解决方案。生产者消费者模型是一种并发协作模型。

    二、解决方式介绍

    2.1 管程法

    1. 生产者 :负责生产数据的模块(模块可能是方法、对象、线程、进程);
    2. 消费者 :负责处理数据的模块(模块可能是方法、对象、线程、进程);
    3. 缓冲区 :消费者不能直接使用生产者的数据,它们之间有个“缓冲区”(缓冲区一般是队列)。

    生产者和消费者都是通过缓冲区进行数据的 放 和 那 。

    这样的话,一来可以避免旱的旱死,涝的涝死的问题:不管哪一方过快或者过慢,缓冲区始终有一部分数据;二来能够达到生产者和消费者的解耦,不再直接通信,从而提高效率。

    因为容器相当于一个输送商品的管道,所以成为 管程法 。

    2.2 信号灯法

    采用类似红灯绿灯的模式,决定车走还是人走。

    • 管程法使用容器的状态来控制,数据在容器中;
    • 而信号灯法只是用信号来给生产者和消费者提醒,他们的交互数据并不由信号灯来保管。

    2.3 Object类

    jdk 里面 Object 类老早就有提供解决线程间通信的问题的方法:

    1. wait() :表示线程一直等待,直到其他线程通知(也就是调用了notify或者notifyAll方法),与sleep不同,会释放锁;
    2. wait(long timeout) :指定时间;
    3. notify() :唤醒一个处于等待状态的线程;
    4. notifyAll() :唤醒同一个对象上所有调用 wait() 方法的线程,优先级别高的线程优先调度。

    这几个方法都是在 同步方法或者同步代码块 中使用,否则会抛出异常。

    (很多面试题问 Java 的 Object 类有哪些方法,都是希望得到关于这块的答案,引导多线程)

    三、管程法实现

    管程法实现的四个角色:

    1. 生产者和消费者都是多线程;
    2. 中间的缓冲区应该是一个容器,并且需要的是一个 并发容器 ,java.util.concurrent包里面已经提供了;
    3. 资源,也就是各个角色来回交换的商品。

    利用 Object 类的几个方法,来实现管程法,以下是代码示例:

    /**
    * 协作模型:生产者消费者模型实现:管程法
    */
    public class Cooperation1 {
        public static void main(String[] args) {
            Container container = new Container();
            new Producer(container).start();
            new Consumer(container).start();
        }
    }
    
    /**
    * 生产者
    */
    class Producer extends Thread{
        Container container;
        public Producer(Container container){
            this.container = container;
        }
        @Override
        public void run() {
            //生产过程
            for (int i=0; i<10; i++){
                System.out.println("生产第 " + i + " 个馒头");
                container.push(new Hamburger(i));
            }
        }
    }
    
    /**
    * 消费者
    */
    class Consumer extends Thread{
        Container container;
        public Consumer(Container container){
            this.container = container;
        }
        @Override
        public void run() {
            //消费过程
            for (int i=0; i<10; i++){
                System.out.println("消费第 " + container.pop().id + " 个馒头");
            }
        }
    }
    
    /**
    * 缓冲区,操作商品,并和生产者、消费者交互
    */
    class Container{
        Hamburger[] food = new Hamburger[10];
        private int count = 0;
        //存储:生产
        public synchronized void push(Hamburger hamburger){
            if (count == food.length){
                try {
                    this.wait();//阻塞,但是等待消费者通知后会解除
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            food[count++] = hamburger;
            this.notifyAll();//说明存在数据了,通知消费者消费
        }
        //获取:消费
        public synchronized Hamburger pop(){
            if (count ==0 ){
                try {
                    this.wait();//阻塞,直到生产者通知后会解除
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            Hamburger ans = food[--count];
            this.notifyAll();//存在空余空间了,通知生产者生产
            return ans;
        }
    }
    
    /**
    * 商品
    */
    class Hamburger{
        int id;
        public Hamburger(int id) {
            this.id = id;
        }
    }

    其中的核心有这么几点:

    1. 容器相当于一个栈,是后进先出的;
    2. 容器的两个方法对于资源的操作,一个和生产者交互,一个和消费者交互,除了 synchronized 修饰,因为两个方法是互斥的,所以利用 wait 和 notify 方法使他们完成阻塞和解除阻塞;
    3. 生产者和容器交互,添加数据;
    4. 消费者和容器交互,删除数据。

    前面关于 线程的阻塞问题,生命周期里的阻塞 ,完整的可能情况,就包含这里的阻塞情况:

    Java多线程:线程间通信—生产者消费者模型

     

    四、信号灯法实现

    和上一种通过容器的容量让线程之间互相通知的方法不同,信号灯法没有用数据缓存的方式,而是用 信号灯来指示双方 ,对方是否已经准备好了要和你通信。

    下面是一个 电视直播和观众的代码示例,通过信号灯,通知演员和观众直播,确保演员在演的时候,让观众来看。

    /**
    * 协作模型:生产者消费者实现:信号灯法
    */
    public class Cooperation2 {
        public static void main(String[] args) {
            TV tv = new TV();
            new Actor(tv).start();
            new Fans(tv).start();
        }
    }
    /**
    * 生产者:演员
    */
    class Actor extends Thread{
        TV tv;
        public Actor(TV tv){
            this.tv = tv;
        }
        @Override
        public void run() {
            for (int i=0; i<10; i++){
                if (i%2 == 0){
                    this.tv.play("节目 " + i);
                }else{
                    this.tv.play("广告 " + i);
                }
            }
        }
    }
    /**
    * 消费者:观众
    */
    class Fans extends Thread{
        TV tv;
        public Fans(TV tv){
            this.tv = tv;
        }
        @Override
        public void run() {
            for (int i=0; i<10; i++){
                tv.watch();
            }
        }
    }
    
    /**
    * 共同资源:电视直播
    */
    class TV{
        String voice;
        //信号灯,如果为真则演员准备,观众等待
        //如果为假,则观众就位,演员等待
        boolean flag = true;
    
        //表演方法:针对生产者
        public synchronized void play(String voice){
            //演员等待
            if (!flag){
                try {
                    this.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            this.voice = voice;
            System.out.println("表演 "+voice +" ing");
            //唤醒观众
            this.notifyAll();
            this.flag = !flag;
        }
    
        //观看方法:针对消费者
        public synchronized void watch(){
            //观众等待
            if (flag){
                try {
                    this.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("观看 " + voice +" ing");
            this.notifyAll();
            this.flag = !flag;
        }
    }

    可以看到,相比管程法的核心区别是:

    TV 没有用一个容器存储数据 ,只是通过生产者是否生产,来决定 信号灯 的标志,以此 通知消费者来消费。

    显然这两种实现方法,有不同的适用场景,那就是决定于生产者消费者是否有数据沟通。

    展开全文
  • 多线程环境下,只要有并发问题,就要保证数据的安全性,一般指的是通过 synchronized 来进行同步。 另一个问题,多个线程之间如何协作呢? 我们看一个仓库出货问题(更具体一些,快餐店直接放好炸货架子,不过...
  • 定义多线程环境下,只要有并发问题,就要保证数据的安全性,一般指的是通过 synchronized 来进行同步。另一个问题, 多个线程之间如何协作呢 ?我们看一个仓库出货问题(更具体一些,快餐店直接放好炸货架子,...
  • 三十二、以太坊安全之 挖矿中心化漏洞 下文为翻译自 Jimmy Song 个人博客。 1、什么是「挖矿中心化」 ...当人们说起挖矿中心化时候,实际上并没有说清楚到底是指上述哪种情况。所以,分析会分别从上...
  • </li><li><code>output.pathinfo</code> 在开发模式下默认打开</li><li>生产环境下,默认关闭内存缓存</li><li><code>entry</code> 默认值 <code>./src</code>,<code>output.path</code> ...
  • 美国供应链管理专业协会对AGV的定义:自动导引小车,是指装备有电磁或光学等自动导引装置,可以在规定的导航路径上行驶,是具有安全保护以及各种移载功能的运输小车。 伴随自动化程度的提高,传统制造业的生产...
  • 贴装时间则是指从送板时间计时结束开 始到最后一个元件贴装结束之间时间,包括PCB上基准点识别、吸嘴更换和所有元件贴装所用时间。 图2 安全锁指示灯详解图  关于贴装效率测试,实际生产中,针对
  • 贴装效率改善

    2021-01-20 00:04:37
    贴装时间则是指从送板时间计时结束开 始到一个元件贴装结束之间时间,包括PCB上基准点识别、吸嘴更换和所有元件贴装所用时间。 图2 安全锁指示灯详解图  关于贴装效率测试,实际生产中,针对原始设备
  • 设备选型概念和选型依据

    千次阅读 2013-10-30 09:34:38
    根据山东省软件评测中心的定义,设备选型是指购置设备时,根据生产工艺要求和市场供应情况,按照技术上先进、经济上合理,生产上适用的原则,以及可行性、维修性、操作性和能源供应等要求,进行调查和分析比较,以...
  • 试验的定义:“试验方案的定义表”和“试验特征的定义表”。 3 关于窗体的设计 3.1 数据库MtrRvw使用窗体展现试验特征的标题、要求值、依据和逻辑关系,输入、编辑和管理试验数据,以上下文敏感的方式访问保存在...
  • 到目前为止, 尽管电子商务还没有一个统一的的定义,专家们也在为它的精确定义而争论不休。但这并不妨碍我们对电子商务真正含义的理解。电 子商务在英文中有两个说法,一个E-Business,另一个E-Commerce。前者...
  • 那么,今天小编为大家带来的守于安全生产的范文,希望对大家有所帮助! 【安全生产范文】 危险化学品泄漏防控计划及泄漏应急响应和处置措施 一、泄漏的定义、表现形式、分级及主要危害。 1、泄漏是指工艺介质的...
  • 敏捷工程和快速更新:使用CI / CD进行自动构建,测试和部署,安全的代码签入以及对生产环境和应用程序频繁更新。 高可用性:设计和部署健壮应用程序和基础结构,以便即使某些组件出现故障或脱机,应用程序仍...
  • 那么,今天小编为大家带来的守于安全生产的范文,希望对大家有所帮助! 【安全生产范文】 危险化学品泄漏防控计划及泄漏应急响应和处置措施 一、泄漏的定义、表现形式、分级及主要危害。 1、泄漏是指工艺介质的...
  • 目的 为落实本公司安全生产责任制,加强特种作业人员管理,规范特种作业人员和特种设备作业人员安全作业,保障安全生产,特制定本规定。 2.适用范围 本规定适用于我厂特种作业人员、特种设备作业人员和在我厂...
  •  3、4M定义: 是指批量产品生产过程中,涉及人(Man)、机(Machine)、料(Material)、法(Method), (含环境场所)等给产品质量带来一定影响变更。 人(Man):是指生产过程中作业者因缺勤、调?..
  •  第三条 (召回定义)本办法所称保健食品召回,是指保健食品生产者(包括进口保健食品代理人,下同)按照规定程序收回已上市销售存在安全隐患保健食品。 第四条 (产品定义)本办法所称存在安...
  • 展开全部酱油标准bai代码GB与GB/T区别有以下四点:du1.代码代表名zhi称不一样。GB 是指强dao制性国家标准,版GB“国标...GB/T推荐性国T推荐性国家标准是指生产、交换、使用等方面,通过经济手段或市场调节而自愿采...

空空如也

空空如也

1 2 3 4
收藏数 74
精华内容 29
关键字:

安全生产的定义是指