疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java线程安全和非线程安全


 

  Java线程安全和非线程安全

  ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?StringBuilder和StringBuffer有什么区别?这些都是Java面试中常见的基础问题。面对这样的问题,回答是:ArrayList是非线程安全的,Vector是线程安全的;HashMap是非线程安全的,HashTable是线程安全的;StringBuilder是非线程安全的,StringBuffer是线程安全的。因为这是昨晚刚背的《Java面试题大全》上面写的。此时如果继续问:什么是线程安全?线程安全和非线程安全有什么区别?分别在什么情况下使用?这样一连串的问题,一口老血就喷出来了…

  非线程安全的现象模拟

  这里就使用ArrayList和Vector二者来说明。

  下面的代码,在主线程中new了一个非线程安全的ArrayList,然后开1000个线程分别向这个ArrayList里面添加元素,每个线程添加100个元素,等所有线程执行完成后,这个ArrayList的size应该是多少?应该是100000个?

  [java]

  public class Main

  {

  public static void main(String[] args)

  {

  // 进行10次测试

  for(int i = 0; i < 10; i++)

  {

  test();

  }

  }

  public static void test()

  {

  // 用来测试的List

  Listlist = new ArrayList

  一些大学生经历了就业波折之后,最终选择回炉重塑的大学生们不在少数。在java培训机构(疯狂软件学院http://www.fkjava.org/抢座热线:020-28309358,020-28309378咨询QQ:707552864,544627560 ),教师拥有软件开发经验,在教学中注重实践性,让学员在最短的时间内学到最前沿的编程技术。通过大量全真企业项目训练,让你成为社会急需的软件工程师。通过很短几个月的java培训,学员具备软件开发能力,可以独立进行java软件开发,而且java工程师的薪资在5000元以上,对自己做一个明智的选择,从此改变自己求职时的尴尬境地。