`
duolaaqian
  • 浏览: 14285 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

[初级]生产者消费者问题

    博客分类:
  • java
阅读更多

 


 

 

 

 

/**
 * 灰烬之灵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();
	}
}

 

分享到:
评论

相关推荐

    生产者消费者循环资料-初级篇-文库.pdf

    生产者消费者循环资料-初级篇-

    《生产者/消费者循环》后续资源包.zip

    生产者/消费者模型是一个典型的同步问题,它涉及到了线程间的通信和协作。在这个模型中,"生产者"负责生成数据,而"消费者"则负责处理这些数据。为了确保生产者不会在没有消费者准备接收时过度生产,同时消费者也...

    第七章海洋初级生产力厦门大学精品课程建设网站.ppt

    - **次级生产力**是消费者利用初级生产者的有机物质生长和繁殖的能力。 - **群落净生产力**是群落总体上积累的有机物质减去异养生物呼吸消耗的差值,反映群落的动态变化。 - **现存量、周转率和周转时间**是评估...

    如何区分生态系统中的分解者与消费者.pdf

    消费者按照食物链的不同位置,可以分为初级消费者(主要食用植物)、次级消费者(食用初级消费者)和顶级消费者(在食物链顶端,通常捕食其他消费者)。消费者的能量来源于生产者,通过食物链逐级传递。 以一些特定...

    高中政治第2单元4.1发展生产满足消费学案新人教版必修1.doc

    交换是商品从生产者转移到消费者的过程;消费是终点,同时也是新生产循环的起点,消费的需求刺激着生产的继续和发展。 3. 社会主义初级阶段的主要矛盾: 在社会主义初级阶段,主要矛盾是人民日益增长的美好生活...

    市场营销——消费者行为.ppt

    消费者购买决策过程主要包括问题认识、信息收集、可供选择方案评估、购买决策、购买后行为等几个阶段。 三、组织购买品 组织购买品是指由工商企业、政府、机构等组织为用于生产、再销售、资本设备的维修、研究与...

    生态文明教育环保教案.pdf

    次级生产量是消费者和分解者利用初级生产量进行生长、繁殖和代谢产生的有机物质。教学难点在于理解次级生产量的产生过程,这需要通过实例分析,结合光合作用和能量流动的概念。 教学目标包括知识、能力和情感三个...

    2019年八年级生物上册7.19生态系统测试题含解析苏教版

    例如,问题中的“兔和羊都吃草,它们又都被狼吃”,形成了食物链,展示了能量如何从植物(生产者)流向初级消费者(兔和羊),再流向次级消费者(狼)。在这个过程中,能量逐级递减,而物质则在生态系统中循环利用。...

    生态系统的结构.ppt

    而“螳螂捕蝉,黄雀在后”这个成语描述的也是食物链,但通常需要加上生产者才能构成完整的食物链,如:树叶(生产者)→蝉(初级消费者)→螳螂(次级消费者)→黄雀(三级消费者)。 关于肉食动物在食物链中的位置...

    消费品市场消费者行为模式研究借鉴.pdf

    2. **霍华德-谢思模式**:这个模式提出消费者购买决策包括问题认知、信息搜索、评估备选方案、购买决策和购后行为五个阶段。 3. **尼科西亚模式**:此模式关注消费者的认知、情感和行为反应,并认为购买决策过程中有...

    2021学年高中政治 2.4.1《发展生产 满足消费》教案 新人教版必修1.doc

    - 消费引导生产方向,消费者的需求会影响企业的生产和投资决策。 - 消费为生产创造新的劳动力,良好的消费环境能提高劳动力素质和生产积极性。 3. 社会再生产过程: - 社会再生产包括生产、分配、交换、消费四个...

    备战2019年高考政治考点一遍过考点04生产与消费含解析.doc

    首先,生产决定了消费的对象,没有生产出来的产品,消费者无法进行消费。其次,生产决定了消费的方式,比如,科技的进步会引领消费方式的变革,例如互联网的发展使得在线购物成为可能。再者,生产决定了消费的质量和...

    《发展生产满足消费》.ppt

    此外,消费者的需要也推动了生产的发展,如对电视智能化的需求促进了电视机厂商对智能电视的研发和生产。 其次,消费对生产具有反作用。消费者对智能手机的巨大需求推动了智能手机产业的快速发展,体现了消费是生产...

    生态系统的能量流动展示课PPT学习教案.pptx

    例如,从生产者到初级消费者的能量传递效率约为13.5%,而从初级消费者到次级消费者的传递效率约为20%。这些数字反映了能量在食物链中逐级递减的规律,也称为“10%法则”,这意味着每上升一个营养级,只有约10%的能量...

    (人教版)2017-2018学年高中必修一配套课件:第四课第一框发展生产满足消费(政治).ppt

    生产是起点,通过分配将产品分发到消费者手中,交换是产品流通的途径,而消费则是社会再生产过程的终点和起点,因为消费的结果又会反过来影响生产。 3. 大力发展生产力的原因和措施 - 原因: (1) 解放和发展社会...

    河北南宫中学(人教版)高中政治必修一学案4.1 发展生产满足消费.docx

    - 消费为生产创造出新的生产需求:消费者对手机功能和通信服务的需求催生了4G技术及产业链的发展。 - 消费的升级引导生产结构的调整:消费者对手机功能的要求促使4G的诞生,体现了消费对生产的导向作用。 3. **...

    kj生态系统的结构PPT教案学习.pptx

    - 食物链描述了生物间的捕食关系,通常从生产者开始,依次是初级消费者、次级消费者等,直到顶级捕食者。 - 营养级表示生物在食物链中的位置,第一营养级为生产者,然后是各级消费者。 - 营养级越高,能量传递...

    2019年高考热点题型和提分秘籍专题33生态系统的结构教学案(生物).docx

    消费者分为初级消费者(直接以生产者为食)、次级消费者(以初级消费者为食)等,如题例1中的鲫鱼和鲢鱼。分解者则是负责分解生物残骸,如细菌和真菌,它们在物质循环中起到关键作用。 食物链和食物网描述了生物...

    政治必修ⅰ人教新课标2.1.1发展生产满足消费学案.-3页.pdf

    - **消费是生产的目的**:生产的产品是为了满足消费者的需要。 - **消费的调节导向作用**:消费偏好影响生产方向,如新消费热点的出现可带动相关产业的发展。 - **消费是生产的动力**:新的消费需求可以刺激企业...

    图标制作软件

    也称为初级生产者(primary prodncer),是构成营养级的基础。在普通的生态系统中,具有光合成能力的绿色植物(包括微生物)是占绝大多数,由于它担负着大部分的有机物生产,所以大多只把绿色植物称为生产者。然而在...

Global site tag (gtag.js) - Google Analytics