欢迎来到天天文库
浏览记录
ID:8971963
大小:117.00 KB
页数:8页
时间:2018-04-13
《java线程安全和非线程安全》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、8www.wuhanaccp.comJava线程安全和非线程安全 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) {
3、 //进行10次测试 for(inti=0;i<10;i++) { test(); } } publicstaticvoidtest() { //用来测试的List Listlist=newArrayList(); //线程数量(1000) intthreadCount=1000; //用来让主线程等待threadCount个子线程执行
4、完毕 CountDownLatchcountDownLatch=newCountDownLatch(threadCount); //启动threadCount个子线程 for(inti=0;i5、ad=newThread(newMyThread(list,countDownLatch)); thread.start(); } try { //主线程等待所有子线程执行完成,再向下执行 countDownLatch.await(); } catch(InterruptedExceptione) { e.printStackTrace(); } 6、 //List的size System.out.println(list.size()); }} classMyThreadimplementsRunnable{ privateListlist; privateCountDownLatchcountDownLatch; publicMyThread(Listlist,CountDownLatchcountDownLatch) { this.list=list; this.countDownLatch=c7、ountDownLatch; } publicvoidrun() { //每个线程向List中添加100个元素 for(inti=0;i<100;i++) { list.add(newObject()); } //完成一个子线程 countDownLatch.countDown();8www.91whit.net8
5、ad=newThread(newMyThread(list,countDownLatch)); thread.start(); } try { //主线程等待所有子线程执行完成,再向下执行 countDownLatch.await(); } catch(InterruptedExceptione) { e.printStackTrace(); }
6、 //List的size System.out.println(list.size()); }} classMyThreadimplementsRunnable{ privateListlist; privateCountDownLatchcountDownLatch; publicMyThread(Listlist,CountDownLatchcountDownLatch) { this.list=list; this.countDownLatch=c
7、ountDownLatch; } publicvoidrun() { //每个线程向List中添加100个元素 for(inti=0;i<100;i++) { list.add(newObject()); } //完成一个子线程 countDownLatch.countDown();8www.91whit.net8
此文档下载收益归作者所有