交通灯:
从中我们可以知道,在拿到问题是画图来理清思路是一种很好的解决问题的方法
根据来来回回的路其实我们主要是考虑4条路线即可,
从面向对象方面考虑这个系统中有红绿灯、车、路线以及灯的控制系统,路是用来装载车辆的
所以应该有对车辆进行增加和删除的方法,假如灯变绿的时候,我们设定一辆车通过一个路口
为一秒,此时我们可以用线程sleep来控制,这样就有线程来随机的改变车的数量
在JDK1.5提供了一个Executors工厂来产生线程池,这个工厂包涵几个静态的方法来创建线程池
调用Executors类的静态工厂方法创建一个ExecutorService对象。这个对象代表线程池
当不想提交任务是也可调用ExecutorsService对象的shutdown方法关闭线程池
其中我们可以想到一条路中的交通灯的数量书固定的所以我们可以用枚举类定义各条路上的灯
可以使用 .valueOf()得到一个枚举对象
以及提供对灯的处理方法(包括变红变绿)去向的灯变红或绿的同时相反方向的灯也应该随之改变
还有判断灯当前状态以及返回状态,设置灯的构造方法并设置私有的
在对灯控制器的定义中应该在构造方法将某条路上的灯初始化;灯控制器中还应该有定时器,
在规定时间内改变当前灯的状态
银行业务:
先要对银行业务调度系统进行分析,
银行业务有6个窗口 1-4也普通,5为快速,6为VIP
这三个类型的窗口也对应了三种客户类型:VIP 普通以及快速客户
要随机生产客户时间间隔以及业务办理时间最大值和最小值的界定
这个系统由一个取号器、三个号码管理器、服务窗口构成。其中取号管理三个号码管理器管理相应客户的号码增减
所以号码管理器有对号码的增减方法,取号管理器中有三个号码管理器的对象以及对这对象提供三个对象的get方法
因为取号器只能有一个所以要把这个取号器的类的构造方法设置成私有的private,在用一个静态的方法返回这个对象
还有可以用List类和子类实现一个动态的数组
我们要对线程访问相同的数据进行同步监控,所以给这两个线程加上synchronized关键字
JDK1.5之后产生一个线程可以用产生线程池的方式,即用Executors类,该类的方法可以产生线程池,线程池中可以用指定数量的线程,调用了execute()方法时则会在线程池中挑选一个空闲的线程来执行;
设置主类的时候可以设定三个定时器按照一定的时间产生不同类型的对象,并储存在一个集合中,这样服务窗口可以从集合中
取出对象并打印出服务信息
定义一个用于储存一个客户号码的成员变量和用于储存所有等待服务的客户号码集合还有产生新号码的方法、
这两个方法由不同的线程操作相同数据,所以要用synchronized关键字
定义一个star方法启动线程根据服务窗口的类别分别循环调用三个不同的方法
还要定义常量,可以定义在一个类中