泛型安全问题,是编译器的一种有好提醒;
早期集合不使用泛型,集合可以存储各种数据,但是每一种类型数据可有自己的特有方法,加入你不小心使用到元素类型的特有方法时,
容易出错(ArrayList集合里装有abc,再装1;迭代集合,你把元素强转成String打印,就会有类型转换异常);泛型避免了强制转换的麻烦,
把运行期间出现的问题转移到编译期间,方便解决问题
线程安全问题,若出现线程安全,则代表代码有问题,是一种错误;
多线程安全问题通常是由于多条语句在操作共享数据,一个线程还没执行完,另一个线程参与执行,导致共享数据错误
如卖票,A窗口正在卖第一张票,是在只需要打印票的时候,停止执行卖票了;此时B窗口也进来卖票了,它发现第一张票
没卖出去,它也会卖第一张;结果会出现2张一模一样的票
解决方法是:对多条语句操作共享数据语句,只让一个线程执行完,在执行过程中,让其他线程不可参与执行;通常用同步解决 |