欢迎来到天天文库
浏览记录
ID:50369494
大小:57.50 KB
页数:8页
时间:2020-03-08
《Java线程安全和非线程安全.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Java线程安全和非线程安全 ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?StringBuilder和StringBuffer有什么区别?这些都是Java面试中常见的基础问题。面对这样的问题,回答是:ArrayList是非线程安全的,Vector是线程安全的;HashMap是非线程安全的,HashTable是线程安全的;StringBuilder是非线程安全的,StringBuffer是线程安全的。因为这是昨晚刚背的《Java面试题大全》上面写的。此时如果继续问:什么是线程安全?线程安全和非线程安全有什么区别?分别在什么情况下使用?这样一连串的问
2、题,一口老血就喷出来了…非线程安全的现象模拟这里就使用ArrayList和Vector二者来说明。下面的代码,在主线程中new了一个非线程安全的ArrayList,然后开1000个线程分别向这个ArrayList里面添加元素,每个线程添加100个元素,等所有线程执行完成后,这个ArrayList的size应该是多少?应该是100000个?12345678910111213141516171819202122232425publicclassMain{ publicstaticvoidmain(String[]args) { //进行10次测试 for(i
3、nti=0;i<10;i++) { test(); } } publicstaticvoidtest() { //用来测试的List Listlist=newArrayList(); //线程数量(1000) intthreadCount=1000; //用来让主线程等待threadCount个子线程执行完毕 CountDownLatchcountDownLat
4、ch=newCountDownLatch(threadCount); //启动threadCount个子线程 for(inti=0;i5、 } try { //主线程等待所有子线程执行完成,再向下执行 countDownLatch.await(); } catch(InterruptedExceptione) { e.printStackTrace(); } //List的size System.out.println(list.size()); }} classMyThreadimplemen6、tsRunnable{ privateListlist; privateCountDownLatchcountDownLatch; publicMyThread(Listlist,CountDownLatchcountDownLatch) { this.list=list; this.countDownLatch=countDownLatch; } publicvoidrun() { //每个线程向List中添加100个元素 fo7、r(inti=0;i<100;i++) { list.add(newObject()); } //完成一个子线程 countDownLatch.countDown(); }}上面进行了10次测试(为什么要测试10次?因为非线程安全并不是每次都会导致问题)。输出结果:999461000001000
5、 } try { //主线程等待所有子线程执行完成,再向下执行 countDownLatch.await(); } catch(InterruptedExceptione) { e.printStackTrace(); } //List的size System.out.println(list.size()); }} classMyThreadimplemen
6、tsRunnable{ privateListlist; privateCountDownLatchcountDownLatch; publicMyThread(Listlist,CountDownLatchcountDownLatch) { this.list=list; this.countDownLatch=countDownLatch; } publicvoidrun() { //每个线程向List中添加100个元素 fo
7、r(inti=0;i<100;i++) { list.add(newObject()); } //完成一个子线程 countDownLatch.countDown(); }}上面进行了10次测试(为什么要测试10次?因为非线程安全并不是每次都会导致问题)。输出结果:999461000001000
此文档下载收益归作者所有