学习记录327@Java仓储模型

本质上仓储模型也是生产者消费者模型,只是多了一个仓库,仓库中添加和取出生产者和消费者共享的产品变量

//产品
package com.dream.test05;

public class Cake {

	private String brand;
	private String date;
	
	public Cake() {
		super();
	}

	public Cake(String brand, String date) {
		super();
		this.brand = brand;
		this.date = date;
	}

	public String getBrand() {
		return brand;
	}

	public void setBrand(String brand) {
		this.brand = brand;
	}

	public String getDate() {
		return date;
	}

	public void setDate(String date) {
		this.date = date;
	}

	@Override
	public String toString() {
		return "Cake [brand=" + brand + ", date=" + date + "]";
	}
}

//仓库
package com.dream.test05;

import java.util.LinkedList;

public class Store {

	private LinkedList<Cake> list = new LinkedList<>();
	private int max=20;
	private int count;
//添加商品
	public void push(Cake cake) {
		synchronized (this) {
			while (count >= max) {
				try {
					this.wait();
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}

			list.add(cake);
			System.out.println("入库," + "此时仓库库存为:" + (++count));
			this.notifyAll();
		}
	}
//取出商品
	public void pop() {
		synchronized (this) {
			while (count <= 0) {
				try {
					this.wait();
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}

			Cake first = list.removeFirst();
			System.out.println("出库:" + first + "剩余库存为:" + (--count));
			this.notifyAll();
		}

	}
}

//生产者
package com.dream.test05;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Producer extends Thread {

	private Store store;

	public Producer() {
		super();
	}

	public Producer(Store store) {
		super();
		this.store = store;
	}
	
	@Override
	public void run() {
		// TODO Auto-generated method stub
		while (true) {
			Cake cake = new Cake("好利来", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			store.push(cake);
		}
		
	}
}

//消费者
package com.dream.test05;

public class Consumer extends Thread {

	private Store store;

	public Consumer() {
		super();
	}

	public Consumer(Store store) {
		super();
		this.store = store;
	}

	@Override
	public void run() {
		while (true) {
			// TODO Auto-generated method stub
			try {
				Thread.sleep(500);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			store.pop();
		}
	}
}

//测试
package com.dream.test05;

public class Test01 {

	public static void main(String[] args) {
		
		Store store = new Store();
		
		Producer producer1 = new Producer(store);
		Consumer consumer1 = new Consumer(store);
		Producer producer2 = new Producer(store);
		Consumer consumer2 = new Consumer(store);
		producer1.start();
		consumer1.start();
		producer2.start();
		consumer2.start();
	}
}

在这里插入图片描述

JAVA 3D开发工具包(3个版本),java3d-1_3、java3d-1_4、java3d-1_5,加一个例子。例子代码如下: import java.awt.GraphicsConfiguration; import javax.media.j3d.Alpha; import javax.media.j3d.BoundingSphere; import javax.media.j3d.BranchGroup; import javax.media.j3d.Canvas3D; import javax.media.j3d.RotationInterpolator; import javax.media.j3d.Transform3D; import javax.media.j3d.TransformGroup; import javax.swing.JApplet; import javax.vecmath.Point3d; import com.sun.j3d.utils.geometry.ColorCube; import com.sun.j3d.utils.universe.SimpleUniverse; import com.sun.j3d.utils.universe.ViewingPlatform; public class HelloUniverse extends JApplet { public BranchGroup createSceneGraph() { BranchGroup objRoot = new BranchGroup(); //新建一个变形组结点,初始化它 //变形组结点指定一个单一的空间变形,通过一个Transform3D对象, //能对它的子结点定位,定向,定尺寸 TransformGroup objTrans = new TransformGroup(); //指定结点可以写入它的对象的变形信息。这样我们的行为代码就能在运行进修改它。 objTrans.setCapability( TransformGroup.ALLOW_TRANSFORM_WRITE); //根节结中加入这个变形组结点 objRoot.addChild(objTrans); //新建一个例子Shape3D结点,并把它加入到场景图表中 objTrans.addChild(new ColorCube(0.4)); Transform3D yAxis = new Transform3D(); /* * 提供转换一个时间值到一个0到1之间的alpha值的方法 * 第一个参数loopCount:运行循环次数,-1表示无限循环 * 第二个参数increasingAlphaDuration:alpha值从0到1的时间周期 */ Alpha rotationAlpha = new Alpha(-1, 4000); //新建旋转者,它将执行变形操作 RotationInterpolator rotator = new RotationInterpolator( rotationAlpha, objTrans, yAxis, 0.0f, (float) Math.PI*2.0f); //用一个中心点和半径定义一个球状范围区域。 BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0); //设置旋转者的运行范围 rotator.setSchedulingBounds(bounds); //加它到根结点 objRoot.addChild(rotator); //执行优化 objRoot.compile(); return objRoot;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值