用java写一个微波炉,注意物品正加热时不能开门,带皮带壳食物不能被加热 - 我写的代码
2009-12-21 17:26
691 查看
1,微波炉是一个对象,它应该是一个公共对象,大家都可以用。
2,注意物品正加热时不能开门,我们可以理解,这个对象在执行时,是排它的,唯一的
3,带皮带壳食物不能被加热。这个对象不是万能的,有些事它是不可以做的。
因此,我们的对象是公共对象,它有一个开关(属性),同时有开关方法,并且是单例程序,并且有同步约束,在方法体里加一些判断, 这个过程就OK了。
以上分析来自于一个帖子,参考以上我自己实现了一下代码,不过也加入我个人的理解
根据题意可以写一个食物的类,它只有一个属性,有活着没有壳:
需要一个微波炉的类,它封装所有的方法和属性,只提供一个public 的构造函数,但是让它实现runnable接口,以从事它应该做的工作 - cook:
注:为了方便,我直接在这个类中写了main方法,其实应该在重写一个测试类的,偷懒一下。。。
代码很简单,就不做解释了
程序运行输出结果:
欢迎大家指点,共同进步
2,注意物品正加热时不能开门,我们可以理解,这个对象在执行时,是排它的,唯一的
3,带皮带壳食物不能被加热。这个对象不是万能的,有些事它是不可以做的。
因此,我们的对象是公共对象,它有一个开关(属性),同时有开关方法,并且是单例程序,并且有同步约束,在方法体里加一些判断, 这个过程就OK了。
以上分析来自于一个帖子,参考以上我自己实现了一下代码,不过也加入我个人的理解
根据题意可以写一个食物的类,它只有一个属性,有活着没有壳:
class Food { public boolean isSheel = false; public Food(boolean sheel) { this.isSheel = sheel; } }
需要一个微波炉的类,它封装所有的方法和属性,只提供一个public 的构造函数,但是让它实现runnable接口,以从事它应该做的工作 - cook:
public class Microwave implements Runnable { private Food food; public int time; public Microwave(Food food, int time) { this.food = food; this.time = time; } @Override public void run() { cook(food, 3000); } private synchronized void cook(Food food, int time) { close(); if (food.isSheel) { System.out .println("this microwave is not available for Food with sheels!"); return; } System.out.println("cooking ...."); try { Thread.sleep(time); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("food is OK!"); open(); } private void close() { System.out.println("door is closed. "); } private void open() { System.out.println("door is opened. "); } public static void main(String[] args) { Microwave mw = new Microwave(new Food(false), 2000); new Thread(mw).start(); new Thread(mw).start(); } }
注:为了方便,我直接在这个类中写了main方法,其实应该在重写一个测试类的,偷懒一下。。。
代码很简单,就不做解释了
程序运行输出结果:
door is closed. cooking .... food is OK! door is opened. door is closed. cooking .... food is OK! door is opened.
欢迎大家指点,共同进步
相关文章推荐
- java中提供了对正则表达式的支持。 有的时候,恰当地使用正则,可以让我们的工作事半功倍! 如下代码用来检验一个四则运算式中数据项的数目,请填写划线部分缺少的代码。 注意:只填写缺少代码,不要
- JSP运行在tomcat下时,页面java代码的变量命名的一个注意事项
- 写一个纯JAVA代码需要注意的几点
- java代码中使用cookie中的一个注意点
- 设计算法并写出代码移除字符串中重复的字符,不能使用额外的缓存空间。注意: 可以使用额外的一个或两个变量,但不允许额外再开一个数组拷贝。
- Android WebView使用之JavaScript调用Java代码注意事项
- Mybatis的xml文件执行sql返回多个值,java代码接收到一个值问题
- Java开发向导页时应该注意的一个问题
- mini学生管理系统。。。全部代码,4个java文件放在同一个包下面即可。用JDBC调用数据库取出数据。
- java工程项目里,在一个包里面,不能出现同名的类名,这问题是刚接触java才会遇到的,特别是新手一般都没有建立包,而是使用默认的,易出现同名的类名,导致eclipse提示错误
- java通过JFrame做一个登录系统的界面完整代码示例
- [编写高质量代码:改善java程序的151个建议]建议42,如何让一个工具类不可实例化
- Java代码构建一个线程池或连接池
- Java代码 将一个链表中的和已给数字相等的数字删除
- [改善Java代码]警惕泛型是不能协变和逆变的
- java 中弹出一个提示对话框的代码还有其他需求操作
- 【代码提取】提取一个文件夹里面的所有Java文件的类名函数名和变量名
- [改善Java代码]注意Class类的特殊性
- 一个JAVA文件加密代码
- try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行,什么时候被执行,在return前还是后?【Java面试题】