分析:
因为敌人的坦克有独特的属性和方法 所以我们单开一个EnemtTank
敌人坦克数量多,我们可以放到集合Vectory,考虑多线程的问题 如果用ArrayList可能会有隔山打牛的bug
ArrayList和Vectory的区别:
ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动、代价比较高。因此,它适合随机查找和遍历,不适合插入和删除。
Vector与ArrayList一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问ArrayList慢。
vector是线程(Thread)同步(Synchronized)的,所以它也是线程安全的,而Arraylist是线程异步(ASynchronized)的,是不安全的。如果不考虑到线程的安全因素,一般用Arraylist效率比较高。
我们这个项目 敌方坦克 都是利用多线程 所以我们必须用Vectory
今天发现个线程安全问题 关于Synchronized和sleep的
把sleep放在Synchronized外面
如果不这样会发现票数剩余会变成负数
发现ok了 也有点不明白
线程的礼让 和插队
先让子线程启动 然后在主线程里调用子线程.join()
线程守护
子线程.setDaemon(true)=============在子线程启动之前
又熄灯了 我真烦啊 白天一堆水课 晚上还得去图书馆干活 还能不能让人学了 赶紧线上教学吧