/** * 灰烬之灵EM(同一场景、同一资源) */ public class EM { /** * 最大充能数量 */ private final int MAX_F_COUNT = 3; /** * 火之余烬F 充能个数 */ private int count; /** * 火之余烬 个数是否已满 */ private boolean isFull(){ return count >= MAX_F_COUNT; } /** * 火之余烬 个数是否不为0 */ private boolean isHas(){ return count > 0; } /** * 放技能 */ public synchronized void skillRelease(){ if(!isHas()){ try { System.out.println("技能CD,不能释放技能"); this.wait();//玩家等待技能CD(此处放在Player类中可能更恰当) } catch (InterruptedException e) { e.printStackTrace(); } } try { Thread.sleep(100);//技能前摇^_^ } catch (InterruptedException e) { e.printStackTrace(); } count--; System.out.println("-释放1个火之灰烬[剩余:"+count+"]"); this.notify(); } /** * 技能CD */ public synchronized void skillCD(){ if(isFull()){ try { System.out.println("能量充满"); this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } count++; System.out.println("+完成1个火之灰烬充能[剩余:"+count+"]"); this.notify(); } }
/** * 生产者(完成技能CD) */ public class War3 implements Runnable{ private EM em; public War3(EM em){ this.em = em; } @Override public void run() { while(true){ em.skillCD(); } } }
/** * 消费者(玩家放技能) */ public class Player implements Runnable{ private EM em; public Player(EM em){ this.em = em; } @Override public void run() { for(int i=0;i<20;i++){ try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } em.skillRelease(); } } }
代码调用:
/** * 生产者消费者问题 * 同一场景,同一资源 * * DOTA1 灰烬之灵(火猫)的 火之余烬(大招) 技能 * * 生产者:war3,当技能个数不足3时,则会技能技能CD,产生 火之余烬 技能 * 消费者:玩家,当技能格数不为0时,可以发动技能 * 同一场景:英雄 火猫 * 同一资源:技能 火之余烬 */ public class Client { public static void main(String[] args) throws InterruptedException { EM em = new EM(); War3 war3 = new War3(em); Player p = new Player(em); new Thread(war3).start(); Thread.sleep(2000);//学完大招后等待充能 new Thread(p).start(); } }
相关推荐
生产者消费者循环资料-初级篇-
生产者/消费者模型是一个典型的同步问题,它涉及到了线程间的通信和协作。在这个模型中,"生产者"负责生成数据,而"消费者"则负责处理这些数据。为了确保生产者不会在没有消费者准备接收时过度生产,同时消费者也...
- **次级生产力**是消费者利用初级生产者的有机物质生长和繁殖的能力。 - **群落净生产力**是群落总体上积累的有机物质减去异养生物呼吸消耗的差值,反映群落的动态变化。 - **现存量、周转率和周转时间**是评估...
初级消费者通常食用植物,次级消费者以初级消费者为食,而顶级消费者位于食物链的最高端,通常捕食其他消费者。消费者之间的这种食物链关系,是生态系统能量流动的主线。 例如,大肠杆菌在动物肠道内以未消化的食物...
交换是商品从生产者转移到消费者的过程;消费是终点,同时也是新生产循环的起点,消费的需求刺激着生产的继续和发展。 3. 社会主义初级阶段的主要矛盾: 在社会主义初级阶段,主要矛盾是人民日益增长的美好生活...
次级生产量是消费者和分解者利用初级生产量进行生长、繁殖和代谢产生的有机物质。教学难点在于理解次级生产量的产生过程,这需要通过实例分析,结合光合作用和能量流动的概念。 教学目标包括知识、能力和情感三个...
例如,问题中的“兔和羊都吃草,它们又都被狼吃”,形成了食物链,展示了能量如何从植物(生产者)流向初级消费者(兔和羊),再流向次级消费者(狼)。在这个过程中,能量逐级递减,而物质则在生态系统中循环利用。...
首先,消费者识别出需求或问题,然后搜集与之相关的信息。通过评估不同方案,消费者最终作出购买决定。购买后,消费者会对其决定作出评价,这可能影响其未来的购买行为。 三、组织购买品 组织购买品涉及的是由企业...
而“螳螂捕蝉,黄雀在后”这个成语描述的也是食物链,但通常需要加上生产者才能构成完整的食物链,如:树叶(生产者)→蝉(初级消费者)→螳螂(次级消费者)→黄雀(三级消费者)。 关于肉食动物在食物链中的位置...
2. **霍华德-谢思模式**:这个模式提出消费者购买决策包括问题认知、信息搜索、评估备选方案、购买决策和购后行为五个阶段。 3. **尼科西亚模式**:此模式关注消费者的认知、情感和行为反应,并认为购买决策过程中有...
- 消费引导生产方向,消费者的需求会影响企业的生产和投资决策。 - 消费为生产创造新的劳动力,良好的消费环境能提高劳动力素质和生产积极性。 3. 社会再生产过程: - 社会再生产包括生产、分配、交换、消费四个...
首先,生产决定了消费的对象,没有生产出来的产品,消费者无法进行消费。其次,生产决定了消费的方式,比如,科技的进步会引领消费方式的变革,例如互联网的发展使得在线购物成为可能。再者,生产决定了消费的质量和...
此外,消费者的需要也推动了生产的发展,如对电视智能化的需求促进了电视机厂商对智能电视的研发和生产。 其次,消费对生产具有反作用。消费者对智能手机的巨大需求推动了智能手机产业的快速发展,体现了消费是生产...
例如,从生产者到初级消费者的能量传递效率约为13.5%,而从初级消费者到次级消费者的传递效率约为20%。这些数字反映了能量在食物链中逐级递减的规律,也称为“10%法则”,这意味着每上升一个营养级,只有约10%的能量...
生产是起点,通过分配将产品分发到消费者手中,交换是产品流通的途径,而消费则是社会再生产过程的终点和起点,因为消费的结果又会反过来影响生产。 3. 大力发展生产力的原因和措施 - 原因: (1) 解放和发展社会...
- 消费为生产创造出新的生产需求:消费者对手机功能和通信服务的需求催生了4G技术及产业链的发展。 - 消费的升级引导生产结构的调整:消费者对手机功能的要求促使4G的诞生,体现了消费对生产的导向作用。 3. **...
- 食物链描述了生物间的捕食关系,通常从生产者开始,依次是初级消费者、次级消费者等,直到顶级捕食者。 - 营养级表示生物在食物链中的位置,第一营养级为生产者,然后是各级消费者。 - 营养级越高,能量传递...
消费者分为初级消费者(直接以生产者为食)、次级消费者(以初级消费者为食)等,如题例1中的鲫鱼和鲢鱼。分解者则是负责分解生物残骸,如细菌和真菌,它们在物质循环中起到关键作用。 食物链和食物网描述了生物...
- **消费是生产的目的**:生产的产品是为了满足消费者的需要。 - **消费的调节导向作用**:消费偏好影响生产方向,如新消费热点的出现可带动相关产业的发展。 - **消费是生产的动力**:新的消费需求可以刺激企业...
也称为初级生产者(primary prodncer),是构成营养级的基础。在普通的生态系统中,具有光合成能力的绿色植物(包括微生物)是占绝大多数,由于它担负着大部分的有机物生产,所以大多只把绿色植物称为生产者。然而在...