这段代码演示了ArrayList的线程不安全,我让3个线程分别对list加入300个字符串,最后的arr的大小为800多,大家可以测试一下,我的一次是898,一次是897,同时还学了join的用法

import java.util.ArrayList;

class ArraySafe implements Runnable
{
private ArrayList<String> array=null;
public ArraySafe(ArrayList<String> ar)
{
array=ar;
} @Override
public void run() {
// TODO Auto-generated method stub
//每个线程加入30个自己的名字到list
for(int i=0;i<300;i++)
{
array.add(Thread.currentThread().getName());
try {
Thread.sleep((long) (100*Math.random()));
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } } } public class ArrayListVectorTest { public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
ArrayList<String> array=new ArrayList<String>(100);
ArraySafe as=new ArraySafe(array);
Thread t1=new Thread(as);
Thread t2=new Thread(as);
Thread t3=new Thread(as);
t1.start();
t2.start();
t3.start();
t1.join();
t2.join();
t3.join();
System.out.println(array.size()); } }

  

ArrayLLis 线程不安 实验的更多相关文章

  1. 线程让出实验【RT-Thread学习笔记 4】

    API: rt_thread_yield 线程函数中调用,本线程释放MCU.如果此时有别的相同优先级的任务整处于等待状态,将获得MCU使用权. 线程让出就是给OS增加一个任务调度的机会. 创建两个线程 ...

  2. java线程不安全类与写法

    线程不安全类 1.为什么java里要同时提供stringbuilder和stringbuffer两种字符串拼接类 2.simpledateformate是线程不安全的类,如果把它作为全局变量会有线程安 ...

  3. Unity FixedUpdate 与 Update 的线程关系实验

    先上结论:FixedUpdate 与 Update 在同一个线程上. 实验过程: 1.打印 FixedUpdate 和 Update 的线程编号 void FixedUpdate () { Debug ...

  4. 线程优先级抢占实验【RT-Thread学习笔记 3】

    同时处于就绪状态的线程,优先级高的先执行. 高优先级就绪时,低优先级任务让出CPU,让高优先级任务先执行. 创建两个任务函数: //线程优先级抢占 void thread1_entry(void *p ...

  5. java实验7-多线程编程

    1 利用Thread和Runnable创建线程 [实验目的] (1)理解用实现Runnable接口的方法实现多线程. (2)掌握线程优先级的设置. (3)加深对线程状态转换的理解. [实验要求] 要求 ...

  6. ArrayList线程不安全

    ArrayList线程不安全分析 http://wsmajunfeng.iteye.com/blog/1493941   一个 ArrayList ,在添加一个元素的时候,它可能会有两步来完成:1. ...

  7. Java中线程总结

    本文简要介绍在 Java 世界中, 线程相关知识.主要包含 线程的创建与销毁:线程安全与同步:线程通讯:注意本文没有什么高深新知识,只缘起前段时间在翻看项目代码的时候,发现有些同学对此有诸多误解,故在 ...

  8. 使用原子类或synchronized(没用Lock)解决阐述多线程所遇到线程安全问题和解决方案

    例子题目: 创建10个线程,每个线程执行10000次加1,输出总和 正常结果100000  但是如果出现线程不安全会低于100000 import java.util.concurrent.Count ...

  9. 201621123005《Java程序设计》第十一次实验总结

    <Java程序设计>第十一次实验总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 1. 源代码阅读:多线程程序BounceThre ...

随机推荐

  1. Win2008 R2 IIS7.5+PHP5(FastCGI)+MySQL5环境搭建教程

    现在很多朋友想尝试win2008 r2来跑web服务器,跟win2003相比界面差别有点大,有些人可能不太习惯,不过以后是趋势啊,这里简单分享下,方便需要的朋友 准备篇 一.环境说明: 操作系统:Wi ...

  2. VC++对话框中添加状态栏的方法

    方法一:1.添加成员变量CStatusBarCtrl m_StatusBar;2.在OnInitDialog()中加入:                  m_StatusBar.Create(WS_ ...

  3. c语言的一些基础知识

    c语言作为经典语言,这里不再多说了.咱从基础一起探讨吧! 一. 定义一个整型,如果作为局部变量,没有初始化的情况下,它是一个随机的值的,一般情况下输出会是0,但这个0是作为垃圾值的;而如果作为全局变量 ...

  4. c++二分答案 之 跳石头

    题目: 题目描述 Description 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之 ...

  5. 开发设计模式(六)多例模式(Multition Pattern)

    多例模式实际上就是单例模式的扩充,多例模式又划分为有上限多例模式和无上限多例模式两种,有上限多例模式中的多例类的实例是有上限的,当这个多例类中的上限数值上等于 1 时,此时,多例类退化回到了单例类:而 ...

  6. 关于tabBar的图片不能正常显示问题

    可以先把图片的源文件的名称后面加上@2x  这种图片显示不正常问题原因可能是没有二倍图造成的!!

  7. css 垂直同步的几种方式

    第一种: 利用 display:table 和 display:table-cell 的方式 这种方式就好像将table布局搬过来一样,相信大家对table的td还是有印象的,它的内容是可以设置垂直居 ...

  8. <三> jQuery 选择器

    jQuery 选择器选择需要应用效果的元素,jQuery 元素选择器和属性选择器允许您通过标签名.属性名或内容对 HTML 元素进行选择.选择器允许您对 HTML 元素组或单个元素进行操作. 元素选择 ...

  9. python join字符连接函数的使用方法

    就是把一个list中所有的串按照你定义的分隔符连接起来,比如: >>> import string >>> >>> >>> li ...

  10. C#语法中一个问号(?)和两个问号(??)的运算符是什么意思?

    (1).C#语法中一个个问号(?)的运算符是指:可以为 null 的类型. MSDN上面的解释: 在处理数据库和其他包含不可赋值的元素的数据类型时,将 null 赋值给数值类型或布尔型以及日期类型的功 ...